"""
应用中心管理模块
提供应用中心相关的API接口和模拟数据
"""

from django.http import JsonResponse
from rest_framework.views import APIView
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
import json
from datetime import datetime, timedelta
import random
from WxApi import models


# 不同应用ID对应的应用列表数据
MOCK_APPS_BY_ID = {
    '1': [  # 考勤管理系统相关应用
    {
        'id': 1,
        'name': '测试',
        'category': '人力资源',
        'status': 'active',
        'statusText': '运行中',
        'priority': 'high',
        'priorityText': '高优先级',
        'colorCode': '#faad14',
        'author': '张三',
        'createTime': '2024-01-15 09:30:00',
        'updateTime': '2024-03-20 14:15:00',
        'version': 'v2.1.3',
        'usageCount': 1250,
        'icon': '/images/icons/attendance.png',
        'description': '员工考勤打卡、请假申请、加班管理等功能',
            'basicInfo': [
                {'label': '应用类别', 'value': '人力资源'},
                {'label': '创建时间', 'value': '2024-01-15 09:30:00'},
                {'label': '创建者', 'value': '张三'},
                {'label': '版本号', 'value': 'v2.1.3'},
                {'label': '使用次数', 'value': '1250'},
                {'label': '最后更新', 'value': '2024-03-20 14:15:00'},
                {'label': '是否证券期货评估业务', 'value': False, 'type': 'radio'},
                {'label': '是否金融类资产评估业务', 'value': True, 'type': 'radio'}
            ],
            'tabsData': [
                {
                    'key': 'contract',
                    'tab': '合同',
                    'fields': [
                        {'label': '合同编号', 'value': 'HT-2024-001'},
                        {'label': '合同金额', 'value': '￥500,000'},
                        {'label': '签订日期', 'value': '2024-01-15'},
                        {'label': '合同状态', 'value': '执行中'},
                        {'label': '合同类型', 'value': '服务合同'}
                    ]
                },
                {
                    'key': 'budget',
                    'tab': '预算回款',
                    'fields': [
                        {'label': '预算总额', 'value': '￥500,000'},
                        {'label': '已回款', 'value': '￥300,000'},
                        {'label': '待回款', 'value': '￥200,000'},
                        {'label': '回款比例', 'value': '60%'}
                    ]
                },
                {
                    'key': 'finance',
                    'tab': '财务',
                    'fields': [
                        {'label': '收入总额', 'value': '￥300,000'},
                        {'label': '支出总额', 'value': '￥150,000'},
                        {'label': '利润额', 'value': '￥150,000'},
                        {'label': '利润率', 'value': '50%'}
                    ]
                },
                {
                    'key': 'invoice',
                    'tab': '开票明细',
                    'fields': [
                        {'label': '已开票金额', 'value': '￥300,000'},
                        {'label': '开票次数', 'value': '3次'},
                        {'label': '最近开票', 'value': '2024-03-15'},
                        {'label': '待开票', 'value': '￥200,000'}
                    ]
                },
                {
                    'key': 'payment',
                    'tab': '到账明细',
                    'fields': [
                        {'label': '到账总额', 'value': '￥280,000'},
                        {'label': '到账次数', 'value': '2次'},
                        {'label': '最近到账', 'value': '2024-03-10'},
                        {'label': '待到账', 'value': '￥20,000'}
                    ]
                },
                {
                    'key': 'invoice_payment',
                    'tab': '项目开票到账明细',
                    'fields': [
                        {'label': '开票到账率', 'value': '93.3%'},
                        {'label': '开票未到账', 'value': '￥20,000'},
                        {'label': '平均到账周期', 'value': '15天'},
                        {'label': '逾期未到账', 'value': '￥0'}
                    ]
                },
                {
                    'key': 'expense',
                    'tab': '支出',
                    'fields': [
                        {'label': '人力成本', 'value': '￥80,000'},
                        {'label': '材料成本', 'value': '￥40,000'},
                        {'label': '其他费用', 'value': '￥30,000'},
                        {'label': '支出总计', 'value': '￥150,000'}
                    ]
                },
                {
                    'key': 'settlement',
                    'tab': '结算',
                    'fields': [
                        {'label': '结算状态', 'value': '未结算'},
                        {'label': '应结算额', 'value': '￥500,000'},
                        {'label': '已结算额', 'value': '￥0'},
                        {'label': '预计结算日期', 'value': '2024-06-30'}
                    ]
                }
            ],
        'details': [
            {'label': '支持平台', 'value': 'Web端、移动端、小程序'},
            {'label': '用户数量', 'value': '500+ 活跃用户'},
            {'label': '数据存储', 'value': 'MySQL 8.0'},
            {'label': '部署环境', 'value': '阿里云服务器'},
            {'label': '维护团队', 'value': 'IT部门'},
            {'label': '联系方式', 'value': 'zhangsan@company.com'}
        ],
            'Review': [
                {'title': '初审', 'describe': '11:30', 'reviewer': '张三', 'status': 'completed'},
                {'title': '复审', 'describe': '12:30', 'reviewer': '李四', 'status': 'completed'},
                {'title': '签发', 'describe': '13:30', 'reviewer': '王五', 'status': 'pending'}
            ]
        },
        {
            'id': 11,
            'name': '员工档案管理',
            'category': '员工管理',
            'status': 'active',
            'statusText': '运行中',
            'priority': 'high',
            'priorityText': '高优先级',
            'colorCode': '#52c41a',
            'author': '李四',
            'createTime': '2024-02-01 10:00:00',
            'updateTime': '2024-03-25 16:30:00',
            'version': 'v1.5.2',
            'usageCount': 800,
            'icon': '/images/icons/employee.png',
            'description': '员工档案、入职离职、人事信息管理',
            'basicInfo': [
                {'label': '应用类别', 'value': '员工管理'},
                {'label': '创建时间', 'value': '2024-02-01 10:00:00'},
                {'label': '创建者', 'value': '李四'},
                {'label': '版本号', 'value': 'v1.5.2'},
                {'label': '使用次数', 'value': '800'},
                {'label': '最后更新', 'value': '2024-03-25 16:30:00'},
                {'label': '是否证券期货评估业务', 'value': True, 'type': 'radio'},
                {'label': '是否金融类资产评估业务', 'value': False, 'type': 'radio'}
            ],
            'details': [
                {'label': '支持平台', 'value': 'Web端、移动端'},
                {'label': '用户数量', 'value': '200+ HR用户'},
                {'label': '员工数据', 'value': '5000+ 员工档案'},
                {'label': '维护团队', 'value': 'HR部门 + IT部门'},
                {'label': '联系方式', 'value': 'lisi@company.com'}
            ],
            'Review': [
                {'title': '初审', 'describe': '09:15', 'reviewer': '赵六', 'status': 'completed'},
                {'title': '复审', 'describe': '10:45', 'reviewer': '孙七', 'status': 'completed'},
                {'title': '签发', 'describe': '14:20', 'reviewer': '周八', 'status': 'pending'}
            ]
        }
    ],
    '23': [  # 郭丰、郭光章所属位于江宁区东山街道府前东路9号江宁万达广场（西区）4幢1116室房地产抵押价值评估相关应用
        {
            'id': 2,
            'name': '郭丰、郭光章所属位于江宁区东山街道府前东路9号江宁万达广场（西区）4幢1116室房地产抵押价值评估',
            'category': '项目已取消',
            'status': 'active',
            'statusText': '已盖章',
            'priority': '项目初审',
            'priorityText': '项目初审',
            'colorCode': '#52c41a',
            'author': '郭丰',
            'createTime': '2024-02-10 11:00:00',
            'updateTime': '2024-03-25 16:30:00',
            'version': 'v1.8.2',
        'usageCount': 890,
        'icon': '/images/icons/finance.png',
        'description': '房地产抵押价值评估项目管理',
            'basicInfo': [
                {'label': '是否单一项目', 'value': True, 'type': 'radio'},
                {'label': '发起部门', 'value': '江阴事业中心'},
                {'label': '登记时间', 'value': '2025-10-20 15:32'},
                {'label': '项目类型', 'value': '预估'},
                {'label': '报告编号', 'value': '苏同方【2025】(溢)(预)第0305号'},
                {'label': '是否房地产', 'value': False, 'type': 'radio'},
                {'label': '项目名称', 'value': '徐兰荣朝阳路105-5，105-6号'},
                {'label': '委托方', 'value': '徐兰英'},
                {'label': '委托方联系人', 'value': ''},
                {'label': '委托方联系电话', 'value': ''},
                {'label': '委托方地址', 'value': ''},
                {'label': '业务来源', 'value': '徐兰英'},
                {'label': '业务来源联系人', 'value': ''},
                {'label': '业务来源联系电话', 'value': ''},
                {'label': '实施单位', 'value': ''},
                {'label': '项目负责人', 'value': '徐琳燕'},
                {'label': '归档日期', 'value': ''},
                {'label': '归档人员', 'value': ''},
                {'label': '项目状态', 'value': '待盖章'},
                {'label': '预计收费金额', 'value': ''},
                {'label': '开票总金额', 'value': ''},
                {'label': '到账总金额', 'value': ''},
                {'label': '备注', 'value': ''},
                {'label': '注销日期', 'value': ''},
                {'label': '注销原因', 'value': ''}
            ],
            'tabsData': [
                {
                    'key': 'contract',
                    'tab': '合同',
                    'columns': [
                        {'key': 'contractNumber', 'label': '合同编号'},
                        {'key': 'department', 'label': '发起部门'},
                        {'key': 'initiator', 'label': '发起人'},
                        {'key': 'manager', 'label': '合同负责人'},
                        {'key': 'type', 'label': '类型'},
                        {'key': 'partyA', 'label': '甲方'}
                    ],
                    'tableData': [
                        {
                            'contractNumber': '2025-TF-450',
                            'department': '评估咨询二中心',
                            'initiator': '胡俊',
                            'manager': '胡俊',
                            'type': '承揽156445651656',
                            'partyA': '无锡市新吴区江溪街道睦邻管理中心'
                        },
                        {
                            'contractNumber': '2025-TF-451',
                            'department': '评估咨询一中心',
                            'initiator': '张三',
                            'manager': '李四',
                            'type': '服务合同',
                            'partyA': '苏州市工业园区管理委员会'
                        },
                        {
                            'contractNumber': '2025-TF-452',
                            'department': '评估咨询三中心',
                            'initiator': '王五',
                            'manager': '王五',
                            'type': '承揽',
                            'partyA': '南京市鼓楼区人民政府'
                        },
                        {
                            'contractNumber': '2025-TF-453',
                            'department': '评估咨询一中心',
                            'initiator': '赵六',
                            'manager': '赵六',
                            'type': '服务合同',
                            'partyA': '常州市新北区人民政府'
                        },
                        {
                            'contractNumber': '2025-TF-454',
                            'department': '评估咨询二中心',
                            'initiator': '孙七',
                            'manager': '周八',
                            'type': '承揽',
                            'partyA': '镇江市京口区人民政府'
                        },
                        {
                            'contractNumber': '2025-TF-455',
                            'department': '评估咨询三中心',
                            'initiator': '吴九',
                            'manager': '吴九',
                            'type': '服务合同',
                            'partyA': '扬州市广陵区人民政府'
                        },
                        {
                            'contractNumber': '2025-TF-456',
                            'department': '评估咨询一中心',
                            'initiator': '郑十',
                            'manager': '钱十一',
                            'type': '承揽',
                            'partyA': '泰州市海陵区人民政府'
                        },
                        {
                            'contractNumber': '2025-TF-457',
                            'department': '评估咨询二中心',
                            'initiator': '李十二',
                            'manager': '李十二',
                            'type': '服务合同',
                            'partyA': '南通市崇川区人民政府'
                        },
                        {
                            'contractNumber': '2025-TF-458',
                            'department': '评估咨询三中心',
                            'initiator': '王十三',
                            'manager': '张十四',
                            'type': '承揽',
                            'partyA': '盐城市亭湖区人民政府'
                        },
                        {
                            'contractNumber': '2025-TF-459',
                            'department': '评估咨询一中心',
                            'initiator': '刘十五',
                            'manager': '刘十五',
                            'type': '服务合同',
                            'partyA': '淮安市清江浦区人民政府'
                        }
                    ]
                },
                {
                    'key': 'budget',
                    'tab': '预算回款',
                    'columns': [
                        {'key': 'year', 'label': '年份'},
                        {'key': 'month', 'label': '月份'},
                        {'key': 'budgetAmount', 'label': '预算回款金额'},
                        {'key': 'actualAmount', 'label': '实际回款金额'},
                        {'key': 'difference', 'label': '预算差异'},
                        {'key': 'remark', 'label': '备注'}
                    ],
                    'tableData': [
                        {
                            'year': '2025',
                            'month': '1月',
                            'budgetAmount': '150000.00',
                            'actualAmount': '150000.00',
                            'difference': '0.00',
                            'remark': '按时回款'
                        },
                        {
                            'year': '2025',
                            'month': '2月',
                            'budgetAmount': '200000.00',
                            'actualAmount': '180000.00',
                            'difference': '-20000.00',
                            'remark': '部分延期'
                        },
                        {
                            'year': '2025',
                            'month': '3月',
                            'budgetAmount': '250000.00',
                            'actualAmount': '270000.00',
                            'difference': '20000.00',
                            'remark': '超额完成'
                        },
                        {
                            'year': '2025',
                            'month': '4月',
                            'budgetAmount': '250000.00',
                            'actualAmount': '',
                            'difference': '-250000.00',
                            'remark': '待回款'
                        }
                    ]
                },
                {
                    'key': 'finance',
                    'tab': '财务',
                    'fields': [
                        {'label': '收入总额', 'value': '￥600,000'},
                        {'label': '支出总额', 'value': '￥280,000'},
                        {'label': '利润额', 'value': '￥320,000'},
                        {'label': '利润率', 'value': '53.3%'}
                    ]
                },
                {
                    'key': 'invoice',
                    'tab': '开票明细',
                    'columns': [
                        {'key': 'company', 'label': '开票申请公司'},
                        {'key': 'subCompany', 'label': '二级开票公司'},
                        {'key': 'applicant', 'label': '开票申请人'},
                        {'key': 'date', 'label': '开票日期'},
                        {'key': 'amount', 'label': '开票金额'},
                        {'key': 'received', 'label': '到账金额'},
                        {'key': 'personnel', 'label': '开票人员'},
                        {'key': 'invoiceNumber', 'label': '发票号码'}
                    ],
                    'tableData': [
                        {
                            'company': '无锡总公司',
                            'subCompany': '江苏同方房地产资产评估规划勘测有限公司',
                            'applicant': '王志雪',
                            'date': '2025/7/7',
                            'amount': '2000.00',
                            'received': '',
                            'personnel': '周丽',
                            'invoiceNumber': '25322000000313271573'
                        },
                        {
                            'company': '苏州分公司',
                            'subCompany': '江苏同方房地产资产评估规划勘测有限公司',
                            'applicant': '李梅',
                            'date': '2025/7/8',
                            'amount': '5000.00',
                            'received': '5000.00',
                            'personnel': '周丽',
                            'invoiceNumber': '25322000000313271574'
                        },
                        {
                            'company': '南京分公司',
                            'subCompany': '江苏同方房地产资产评估规划勘测有限公司',
                            'applicant': '张伟',
                            'date': '2025/7/10',
                            'amount': '10000.00',
                            'received': '8000.00',
                            'personnel': '周丽',
                            'invoiceNumber': '25322000000313271575'
                        },
                        {
                            'company': '常州分公司',
                            'subCompany': '江苏同方房地产资产评估规划勘测有限公司',
                            'applicant': '王芳',
                            'date': '2025/7/12',
                            'amount': '15000.00',
                            'received': '15000.00',
                            'personnel': '周丽',
                            'invoiceNumber': '25322000000313271576'
                        },
                        {
                            'company': '无锡总公司',
                            'subCompany': '江苏同方房地产资产评估规划勘测有限公司',
                            'applicant': '刘强',
                            'date': '2025/7/15',
                            'amount': '8000.00',
                            'received': '',
                            'personnel': '周丽',
                            'invoiceNumber': '25322000000313271577'
                        },
                        {
                            'company': '苏州分公司',
                            'subCompany': '江苏同方房地产资产评估规划勘测有限公司',
                            'applicant': '陈静',
                            'date': '2025/7/18',
                            'amount': '12000.00',
                            'received': '12000.00',
                            'personnel': '周丽',
                            'invoiceNumber': '25322000000313271578'
                        },
                        {
                            'company': '南京分公司',
                            'subCompany': '江苏同方房地产资产评估规划勘测有限公司',
                            'applicant': '杨明',
                            'date': '2025/7/20',
                            'amount': '6000.00',
                            'received': '6000.00',
                            'personnel': '周丽',
                            'invoiceNumber': '25322000000313271579'
                        }
                    ]
                },
                {
                    'key': 'payment',
                    'tab': '到账明细',
                    'columns': [
                        {'key': 'amount', 'label': '到账金额'},
                        {'key': 'date', 'label': '到账日期'},
                        {'key': 'companyName', 'label': '开票公司名称'},
                        {'key': 'invoiceTitle', 'label': '票据抬头'}
                    ],
                    'tableData': [
                        {
                            'amount': '150000.00',
                            'date': '2025/1/15',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '无锡市新吴区人民政府江溪街道办事处'
                        },
                        {
                            'amount': '180000.00',
                            'date': '2025/2/20',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '苏州市工业园区管理委员会'
                        },
                        {
                            'amount': '270000.00',
                            'date': '2025/3/25',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '南京市鼓楼区人民政府'
                        }
                    ]
                },
                {
                    'key': 'invoice_payment',
                    'tab': '项目开票到账明细',
                    'columns': [
                        {'key': 'date', 'label': '日期'},
                        {'key': 'invoiceAmount', 'label': '开票金额'},
                        {'key': 'receivedAmount', 'label': '到账金额'},
                        {'key': 'balance', 'label': '余额'},
                        {'key': 'companyName', 'label': '开票公司名称'},
                        {'key': 'invoiceTitle', 'label': '票据抬头'}
                    ],
                    'tableData': [
                        {
                            'date': '2025/7/7',
                            'invoiceAmount': '2000.00',
                            'receivedAmount': '0',
                            'balance': '2000.00',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '无锡市新吴区人民政府江溪街道办事处(睦邻中心)'
                        },
                        {
                            'date': '2025/7/8',
                            'invoiceAmount': '5000.00',
                            'receivedAmount': '5000.00',
                            'balance': '0',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '苏州市工业园区管理委员会'
                        },
                        {
                            'date': '2025/7/10',
                            'invoiceAmount': '10000.00',
                            'receivedAmount': '8000.00',
                            'balance': '2000.00',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '南京市鼓楼区人民政府城市建设发展中心'
                        },
                        {
                            'date': '2025/7/15',
                            'invoiceAmount': '15000.00',
                            'receivedAmount': '15000.00',
                            'balance': '0',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '常州市新北区人民政府经济发展局'
                        },
                        {
                            'date': '2025/7/20',
                            'invoiceAmount': '8000.00',
                            'receivedAmount': '0',
                            'balance': '8000.00',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '镇江市京口区人民政府规划建设局'
                        },
                        {
                            'date': '2025/7/25',
                            'invoiceAmount': '12000.00',
                            'receivedAmount': '12000.00',
                            'balance': '0',
                            'companyName': '江苏同方房地产资产评估规划勘测有限公司',
                            'invoiceTitle': '扬州市广陵区人民政府城市管理局'
                        }
                    ]
                },
                {
                    'key': 'expense',
                    'tab': '支出',
                    'columns': [
                        {'key': 'category', 'label': '支出类别'},
                        {'key': 'year', 'label': '归属年份'},
                        {'key': 'month', 'label': '归属月份'},
                        {'key': 'amount', 'label': '金额'},
                        {'key': 'paymentDate', 'label': '支付日期'},
                        {'key': 'preparer', 'label': '填报人'},
                        {'key': 'handler', 'label': '经办人'},
                        {'key': 'remark', 'label': '备注'}
                    ],
                    'tableData': [
                        {
                            'category': '人力成本',
                            'year': '2025',
                            'month': '1月',
                            'amount': '50000.00',
                            'paymentDate': '2025/1/10',
                            'preparer': '张三',
                            'handler': '李四',
                            'remark': '项目人员工资'
                        },
                        {
                            'category': '材料成本',
                            'year': '2025',
                            'month': '1月',
                            'amount': '30000.00',
                            'paymentDate': '2025/1/15',
                            'preparer': '王五',
                            'handler': '赵六',
                            'remark': '采购办公用品'
                        },
                        {
                            'category': '人力成本',
                            'year': '2025',
                            'month': '2月',
                            'amount': '50000.00',
                            'paymentDate': '2025/2/10',
                            'preparer': '张三',
                            'handler': '李四',
                            'remark': '项目人员工资'
                        },
                        {
                            'category': '其他费用',
                            'year': '2025',
                            'month': '2月',
                            'amount': '20000.00',
                            'paymentDate': '2025/2/20',
                            'preparer': '孙七',
                            'handler': '周八',
                            'remark': '差旅费'
                        },
                        {
                            'category': '材料成本',
                            'year': '2025',
                            'month': '3月',
                            'amount': '35000.00',
                            'paymentDate': '2025/3/12',
                            'preparer': '王五',
                            'handler': '赵六',
                            'remark': '设备租赁费'
                        }
                    ]
                },
                {
                    'key': 'settlement',
                    'tab': '结算',
                    'columns': [
                        {'key': 'year', 'label': '归属年份'},
                        {'key': 'month', 'label': '归属月份'},
                        {'key': 'amount', 'label': '金额'},
                        {'key': 'paymentDate', 'label': '支付日期'},
                        {'key': 'remark', 'label': '备注'}
                    ],
                    'tableData': [
                        {
                            'year': '2025',
                            'month': '1月',
                            'amount': '150000.00',
                            'paymentDate': '2025/1/28',
                            'remark': '月度结算'
                        },
                        {
                            'year': '2025',
                            'month': '2月',
                            'amount': '200000.00',
                            'paymentDate': '2025/2/28',
                            'remark': '月度结算'
                        },
                        {
                            'year': '2025',
                            'month': '3月',
                            'amount': '250000.00',
                            'paymentDate': '',
                            'remark': '待结算'
                        }
                    ]
                }
            ],
            'details': [
                {'label': '支持平台', 'value': 'Web端、移动端'},
                {'label': '用户数量', 'value': '300+ 活跃用户'},
                {'label': '月处理单据', 'value': '2000+ 张'},
                {'label': '集成系统', 'value': 'ERP、财务系统'},
                {'label': '维护团队', 'value': '财务部 + IT部门'},
                {'label': '联系方式', 'value': 'lisi@company.com'}
            ],
            'Review': [
                {'title': '初审', 'describe': '08:30', 'reviewer': '吴九', 'status': 'completed'},
                {'title': '复审', 'describe': '11:00', 'reviewer': '郑十', 'status': 'completed'},
                {'title': '签发', 'describe': '15:45', 'reviewer': '钱十一', 'status': 'pending'}
            ]
        },
        {
            'id': 21,
            'name': '预算管理系统',
            'category': '费用管理',
            'status': 'active',
            'statusText': '运行中',
            'priority': 'medium',
            'priorityText': '中优先级',
            'colorCode': '#1890ff',
            'author': '王五',
            'createTime': '2024-01-20 14:30:00',
            'updateTime': '2024-03-22 10:15:00',
            'version': 'v2.0.1',
            'usageCount': 150,
            'icon': '/images/icons/budget.png',
            'description': '预算编制、预算执行与控制管理',
            'basicInfo': [
                {'label': '应用类别', 'value': '费用管理'},
                {'label': '创建时间', 'value': '2024-01-20 14:30:00'},
                {'label': '创建者', 'value': '王五'},
                {'label': '版本号', 'value': 'v2.0.1'},
                {'label': '使用次数', 'value': '150'},
                {'label': '最后更新', 'value': '2024-03-22 10:15:00'}
            ],
            'details': [
                {'label': '支持平台', 'value': 'Web端'},
                {'label': '用户数量', 'value': '50+ 财务人员'},
                {'label': '预算项目', 'value': '200+ 预算科目'},
                {'label': '维护团队', 'value': '财务部'},
                {'label': '联系方式', 'value': 'wangwu@company.com'}
            ],
            'Review': ['初审', '复审', '签发']
        }
    ],
    '3': [  # 项目管理平台相关应用
        {
            'id': 3,
            'name': '估价项目1',
            'category': '项目管理',
            'status': 'pending',
            'statusText': '待上线',
            'priority': 'medium',
            'priorityText': '中优先级',
            'colorCode': '#722ed1',
            'author': '王五',
            'createTime': '2024-03-01 14:20:00',
            'updateTime': '2024-03-28 10:45:00',
            'version': 'v1.0.0-beta',
            'usageCount': 0,
            'icon': '/images/icons/project.png',
            'basicInfo': [
                {'label': '应用类别', 'value': '项目管理'},
                {'label': '创建时间', 'value': '2024-03-01 14:20:00'},
                {'label': '创建者', 'value': '王五'},
                {'label': '版本号', 'value': 'v1.0.0-beta'},
                {'label': '使用次数', 'value': '0'},
                {'label': '最后更新', 'value': '2024-03-28 10:45:00'},
                {'label': '是否证券期货评估业务', 'value': False, 'type': 'radio'},
                {'label': '是否金融类资产评估业务', 'value': True, 'type': 'radio'}
            ],
            'tabsData': [
                {
                    'key': 'contract',
                    'tab': '合同',
                    'fields': [
                        {'label': '合同编号', 'value': 'HT-2024-003'},
                        {'label': '合同金额', 'value': '￥320,000'},
                        {'label': '签订日期', 'value': '2024-03-01'},
                        {'label': '合同状态', 'value': '待执行'},
                        {'label': '合同类型', 'value': '服务合同'}

                    ]
                },
                {
                    'key': 'budget',
                    'tab': '预算回款',
                    'fields': [
                        {'label': '预算总额', 'value': '￥320,000'},
                        {'label': '已回款', 'value': '￥0'},
                        {'label': '待回款', 'value': '￥320,000'},
                        {'label': '回款比例', 'value': '0%'}
                    ]
                },
                {
                    'key': 'finance',
                    'tab': '财务',
                    'fields': [
                        {'label': '收入总额', 'value': '￥0'},
                        {'label': '支出总额', 'value': '￥0'},
                        {'label': '利润额', 'value': '￥0'},
                        {'label': '利润率', 'value': '0%'}
                    ]
                },
                {
                    'key': 'invoice',
                    'tab': '开票明细',
                    'fields': [
                        {'label': '已开票金额', 'value': '￥0'},
                        {'label': '开票次数', 'value': '0次'},
                        {'label': '最近开票', 'value': '-'},
                        {'label': '待开票', 'value': '￥320,000'}
                    ]
                },
                {
                    'key': 'payment',
                    'tab': '到账明细',
                    'fields': [
                        {'label': '到账总额', 'value': '￥0'},
                        {'label': '到账次数', 'value': '0次'},
                        {'label': '最近到账', 'value': '-'},
                        {'label': '待到账', 'value': '￥0'}
                    ]
                },
                {
                    'key': 'invoice_payment',
                    'tab': '项目开票到账明细',
                    'fields': [
                        {'label': '开票到账率', 'value': '0%'},
                        {'label': '开票未到账', 'value': '￥0'},
                        {'label': '平均到账周期', 'value': '-'},
                        {'label': '逾期未到账', 'value': '￥0'}
                    ]
                },
                {
                    'key': 'expense',
                    'tab': '支出',
                    'fields': [
                        {'label': '人力成本', 'value': '￥0'},
                        {'label': '材料成本', 'value': '￥0'},
                        {'label': '其他费用', 'value': '￥0'},
                        {'label': '支出总计', 'value': '￥0'}
                    ]
                },
                {
                    'key': 'settlement',
                    'tab': '结算',
                    'fields': [
                        {'label': '结算状态', 'value': '未开始'},
                        {'label': '应结算额', 'value': '￥320,000'},
                        {'label': '已结算额', 'value': '￥0'},
                        {'label': '预计结算日期', 'value': '2024-12-31'}
                    ]
                }
            ],
            'details': [
                {'label': '支持平台', 'value': 'Web端'},
                {'label': '预期用户', 'value': '200+ 项目成员'},
                {'label': '开发进度', 'value': '85% 完成'},
                {'label': '测试状态', 'value': 'UAT测试中'},
                {'label': '上线计划', 'value': '2024年4月15日'},
                {'label': '联系方式', 'value': 'wangwu@company.com'}
            ],
            'Review': ['初审', '复审', '签发']
        },
        {
            'id': 31,
            'name': '估价项目3',
            'category': '团队协作',
            'status': 'active',
            'statusText': '运行中',
            'priority': 'high',
            'priorityText': '高优先级',
            'colorCode': '#13c2c2',
            'author': '赵六',
            'createTime': '2024-02-15 09:45:00',
            'updateTime': '2024-03-26 11:20:00',
            'version': 'v1.2.0',
            'usageCount': 450,
            'icon': '/images/icons/task.png',
            'basicInfo': [
                {'label': '应用类别', 'value': '团队协作'},
                {'label': '创建时间', 'value': '2024-02-15 09:45:00'},
                {'label': '创建者', 'value': '赵六'},
                {'label': '版本号', 'value': 'v1.2.0'},
                {'label': '使用次数', 'value': '450'},
                {'label': '最后更新', 'value': '2024-03-26 11:20:00'}
            ],
            'details': [
                {'label': '支持平台', 'value': 'Web端、移动端'},
                {'label': '用户数量', 'value': '100+ 团队成员'},
                {'label': '任务数量', 'value': '5000+ 活跃任务'},
                {'label': '维护团队', 'value': '产品部 + IT部门'},
                {'label': '联系方式', 'value': 'zhaoliu@company.com'}
            ],
            'Review': ['初审', '复审', '签发']
        }
    ],
    '65': [  # 合同管理
        {
            'id': 6501,
            'name': '无锡市新吴区人民政府江溪街道办事处睦邻中心服务合同',
            'category': '进行中',
            'status': 'active',
            'statusText': '执行中',
            'priority': 'high',
            'priorityText': '重要',
            'colorCode': '#1890ff',
            'author': '胡俊',
            'createTime': '2025-10-20 14:30:00',
            'updateTime': '2025-11-08 09:15:00',
            'version': 'v1.0',
            'usageCount': 0,
            'icon': '/images/app/合同申请.png',
            'description': '无锡市新吴区人民政府江溪街道办事处睦邻中心服务合同',
            'basicInfo': [
                {'label': '登记时间', 'value': '2025-10-20 14:30:00'},
                {'label': '合同进度', 'value': '执行中'},
                {'label': '甲方', 'value': '无锡市新吴区人民政府江溪街道办事处睦邻管理中心'},
                {'label': '乙方', 'value': '江苏同方房地产资产评估规划勘测有限公司'},
                {'label': '发起人', 'value': '胡俊'},
                {'label': '合同负责人', 'value': '胡俊'},
                {'label': '合同金额（元）', 'value': '280,000.00'},
                {'label': '合同类别', 'value': '承揽'},
                {'label': '合同编号', 'value': '2025-TF-450'},
                {'label': '所属模块', 'value': '估价项目'},
                {'label': '发起部门', 'value': '评估咨询二中心'},
                {'label': '类型', 'value': '服务合同'},
                {'label': '合同标准', 'value': '标准合同'},
                {'label': '合同签订日期', 'value': '2025-10-15'},
                {'label': '合同开始日期', 'value': '2025-10-20'},
                {'label': '合同结束日期', 'value': '2026-10-20'},
                {'label': '我方签字日期', 'value': '2025-10-18'},
                {'label': '对方签字日期', 'value': '2025-10-19'},
                {'label': '我方盖章日期', 'value': '2025-10-18'},
                {'label': '对方盖章日期', 'value': '2025-10-19'},
                {'label': '付款方式', 'value': '分期付款'},
                {'label': '备注', 'value': '年度服务合同'}
            ],
            'tabsData': [
                {
                    'key': 'contract_info',
                    'tab': '合同信息',
                    'fields': [
                        {'label': '合同名称', 'value': '无锡市新吴区人民政府江溪街道办事处睦邻中心服务合同'},
                        {'label': '合同编号', 'value': '2025-TF-450'},
                        {'label': '合同类别', 'value': '承揽'},
                        {'label': '合同金额', 'value': '￥280,000.00'},
                        {'label': '签订日期', 'value': '2025-10-15'},
                        {'label': '开始日期', 'value': '2025-10-20'},
                        {'label': '结束日期', 'value': '2026-10-20'},
                        {'label': '合同期限', 'value': '12个月'},
                        {'label': '甲方', 'value': '无锡市新吴区人民政府江溪街道办事处睦邻管理中心'},
                        {'label': '乙方', 'value': '江苏同方房地产资产评估规划勘测有限公司'},
                        {'label': '甲方联系人', 'value': '王经理'},
                        {'label': '甲方联系电话', 'value': '0510-88888888'},
                        {'label': '乙方联系人', 'value': '胡俊'},
                        {'label': '乙方联系电话', 'value': '0510-88888889'}
                    ]
                },
                {
                    'key': 'related_projects',
                    'tab': '关联项目',
                    'columns': [
                        {'key': 'projectName', 'label': '项目名称', 'width': 300},
                        {'key': 'projectNumber', 'label': '项目编号', 'width': 180},
                        {'key': 'projectType', 'label': '项目类型', 'width': 120},
                        {'key': 'projectStatus', 'label': '项目状态', 'width': 120},
                        {'key': 'projectAmount', 'label': '项目金额', 'width': 150},
                        {'key': 'startDate', 'label': '开始日期', 'width': 150}
                    ],
                    'tableData': [
                        {
                            'projectName': '无锡市新吴区江溪街道办事处睦邻中心房地产评估项目',
                            'projectNumber': 'XM2025-001',
                            'projectType': '房地产评估',
                            'projectStatus': '进行中',
                            'projectAmount': '50,000.00',
                            'startDate': '2025-10-20'
                        },
                        {
                            'projectName': '无锡市新吴区江溪街道办事处睦邻中心资产评估项目',
                            'projectNumber': 'XM2025-002',
                            'projectType': '资产评估',
                            'projectStatus': '进行中',
                            'projectAmount': '30,000.00',
                            'startDate': '2025-10-25'
                        }
                    ]
                },
                {
                    'key': 'contract_files',
                    'tab': '合同资料',
                    'columns': [
                        {'key': 'fileName', 'label': '文件名称', 'width': 300},
                        {'key': 'fileType', 'label': '文件类型', 'width': 120},
                        {'key': 'fileSize', 'label': '文件大小', 'width': 120},
                        {'key': 'uploader', 'label': '上传人', 'width': 120},
                        {'key': 'uploadTime', 'label': '上传时间', 'width': 180}
                    ],
                    'tableData': [
                        {
                            'fileName': '服务合同正式版.pdf',
                            'fileType': 'PDF',
                            'fileSize': '2.5MB',
                            'uploader': '胡俊',
                            'uploadTime': '2025-10-20 14:30:00'
                        },
                        {
                            'fileName': '合同附件1.pdf',
                            'fileType': 'PDF',
                            'fileSize': '1.2MB',
                            'uploader': '胡俊',
                            'uploadTime': '2025-10-20 14:35:00'
                        },
                        {
                            'fileName': '甲方营业执照.jpg',
                            'fileType': 'JPG',
                            'fileSize': '500KB',
                            'uploader': '胡俊',
                            'uploadTime': '2025-10-20 14:40:00'
                        }
                    ]
                },
                {
                    'key': 'workflow',
                    'tab': '工作流程',
                    'columns': [
                        {'key': 'step', 'label': '流程节点', 'width': 150},
                        {'key': 'handler', 'label': '处理人', 'width': 120},
                        {'key': 'status', 'label': '状态', 'width': 120},
                        {'key': 'handleTime', 'label': '处理时间', 'width': 180},
                        {'key': 'remark', 'label': '备注', 'width': 300}
                    ],
                    'tableData': [
                        {
                            'step': '合同起草',
                            'handler': '胡俊',
                            'status': '已完成',
                            'handleTime': '2025-10-15 10:00:00',
                            'remark': '初稿完成'
                        },
                        {
                            'step': '部门审核',
                            'handler': '张主任',
                            'status': '已完成',
                            'handleTime': '2025-10-16 14:30:00',
                            'remark': '审核通过'
                        },
                        {
                            'step': '法务审核',
                            'handler': '李律师',
                            'status': '已完成',
                            'handleTime': '2025-10-17 11:00:00',
                            'remark': '法律条款无问题'
                        },
                        {
                            'step': '财务审核',
                            'handler': '王会计',
                            'status': '已完成',
                            'handleTime': '2025-10-17 16:00:00',
                            'remark': '金额核对无误'
                        },
                        {
                            'step': '总经理审批',
                            'handler': '赵总',
                            'status': '已完成',
                            'handleTime': '2025-10-18 09:30:00',
                            'remark': '批准签订'
                        },
                        {
                            'step': '合同签订',
                            'handler': '胡俊',
                            'status': '已完成',
                            'handleTime': '2025-10-19 15:00:00',
                            'remark': '双方签字盖章'
                        },
                        {
                            'step': '合同归档',
                            'handler': '行政部',
                            'status': '已完成',
                            'handleTime': '2025-10-20 10:00:00',
                            'remark': '已归档保存'
                        }
                    ]
                }
            ],
            'details': [
                {'label': '合同状态', 'value': '执行中'},
                {'label': '累计开票金额', 'value': '￥100,000.00'},
                {'label': '累计回款金额', 'value': '￥80,000.00'},
                {'label': '剩余合同金额', 'value': '￥180,000.00'}
            ],
            'Review': [
                {'title': '起草', 'describe': '2025-10-15', 'reviewer': '胡俊', 'status': 'completed'},
                {'title': '审核', 'describe': '2025-10-16', 'reviewer': '张主任', 'status': 'completed'},
                {'title': '审批', 'describe': '2025-10-18', 'reviewer': '赵总', 'status': 'completed'},
                {'title': '签订', 'describe': '2025-10-19', 'reviewer': '胡俊', 'status': 'completed'}
            ]
        },
        {
            'id': 6502,
            'name': '苏州工业园区管理委员会资产评估服务合同',
            'category': '进行中',
            'status': 'active',
            'statusText': '执行中',
            'priority': 'medium',
            'priorityText': '一般',
            'colorCode': '#52c41a',
            'author': '张三',
            'createTime': '2025-09-15 10:20:00',
            'updateTime': '2025-11-07 15:30:00',
            'version': 'v1.0',
            'usageCount': 0,
            'icon': '/images/app/合同申请.png',
            'description': '苏州工业园区管理委员会资产评估服务合同',
            'basicInfo': [
                {'label': '登记时间', 'value': '2025-09-15 10:20:00'},
                {'label': '合同进度', 'value': '执行中'},
                {'label': '甲方', 'value': '苏州工业园区管理委员会'},
                {'label': '乙方', 'value': '江苏同方房地产资产评估规划勘测有限公司'},
                {'label': '发起人', 'value': '张三'},
                {'label': '合同负责人', 'value': '李四'},
                {'label': '合同金额（元）', 'value': '150,000.00'},
                {'label': '合同类别', 'value': '服务合同'},
                {'label': '合同编号', 'value': '2025-TF-451'},
                {'label': '所属模块', 'value': '资产项目'},
                {'label': '发起部门', 'value': '评估咨询一中心'},
                {'label': '类型', 'value': '服务合同'},
                {'label': '合同标准', 'value': '标准合同'},
                {'label': '合同签订日期', 'value': '2025-09-10'},
                {'label': '合同开始日期', 'value': '2025-09-15'},
                {'label': '合同结束日期', 'value': '2026-03-15'},
                {'label': '我方签字日期', 'value': '2025-09-08'},
                {'label': '对方签字日期', 'value': '2025-09-09'},
                {'label': '我方盖章日期', 'value': '2025-09-08'},
                {'label': '对方盖章日期', 'value': '2025-09-09'},
                {'label': '付款方式', 'value': '按进度付款'},
                {'label': '备注', 'value': '半年度服务合同'}
            ],
            'tabsData': [
                {
                    'key': 'contract_info',
                    'tab': '合同信息',
                    'fields': [
                        {'label': '合同名称', 'value': '苏州工业园区管理委员会资产评估服务合同'},
                        {'label': '合同编号', 'value': '2025-TF-451'},
                        {'label': '合同类别', 'value': '服务合同'},
                        {'label': '合同金额', 'value': '￥150,000.00'},
                        {'label': '签订日期', 'value': '2025-09-10'},
                        {'label': '开始日期', 'value': '2025-09-15'},
                        {'label': '结束日期', 'value': '2026-03-15'},
                        {'label': '合同期限', 'value': '6个月'}
                    ]
                },
                {
                    'key': 'related_projects',
                    'tab': '关联项目',
                    'columns': [
                        {'key': 'projectName', 'label': '项目名称', 'width': 300},
                        {'key': 'projectNumber', 'label': '项目编号', 'width': 180},
                        {'key': 'projectType', 'label': '项目类型', 'width': 120},
                        {'key': 'projectStatus', 'label': '项目状态', 'width': 120}
                    ],
                    'tableData': [
                        {
                            'projectName': '苏州工业园区资产评估项目一期',
                            'projectNumber': 'XM2025-010',
                            'projectType': '资产评估',
                            'projectStatus': '已完成'
                        }
                    ]
                },
                {
                    'key': 'contract_files',
                    'tab': '合同资料',
                    'columns': [
                        {'key': 'fileName', 'label': '文件名称', 'width': 300},
                        {'key': 'fileType', 'label': '文件类型', 'width': 120},
                        {'key': 'uploader', 'label': '上传人', 'width': 120}
                    ],
                    'tableData': [
                        {
                            'fileName': '服务合同.pdf',
                            'fileType': 'PDF',
                            'uploader': '张三'
                        }
                    ]
                },
                {
                    'key': 'workflow',
                    'tab': '工作流程',
                    'columns': [
                        {'key': 'step', 'label': '流程节点', 'width': 150},
                        {'key': 'handler', 'label': '处理人', 'width': 120},
                        {'key': 'status', 'label': '状态', 'width': 120}
                    ],
                    'tableData': [
                        {
                            'step': '合同起草',
                            'handler': '张三',
                            'status': '已完成'
                        },
                        {
                            'step': '合同审核',
                            'handler': '部门主任',
                            'status': '已完成'
                        }
                    ]
                }
            ],
            'Review': [
                {'title': '起草', 'describe': '2025-09-08', 'reviewer': '张三', 'status': 'completed'},
                {'title': '审批', 'describe': '2025-09-09', 'reviewer': '主任', 'status': 'completed'}
            ]
        }
    ],
    'default': [  # 默认应用列表（原有数据）
        {
            'id': 1,
            'name': '333',
            'category': '人力资源',
            'status': 'active',
            'statusText': '运行中',
            'priority': 'high',
            'priorityText': '高优先级',
            'colorCode': '#faad14',
            'author': '张三',
            'createTime': '2024-01-15 09:30:00',
            'updateTime': '2024-03-20 14:15:00',
            'version': 'v2.1.3',
            'usageCount': 1250,
            'icon': '/images/icons/attendance.png',
            'description': '333应用描述',
            'basicInfo': [
                {'label': '应用类别', 'value': '人力资源'},
                {'label': '创建时间', 'value': '2024-01-15 09:30:00'},
                {'label': '创建者', 'value': '张三'},
                {'label': '版本号', 'value': 'v2.1.3'},
                {'label': '使用次数', 'value': '1250'},
                {'label': '最后更新', 'value': '2024-03-20 14:15:00'}
            ],
            'details': [
                {'label': '支持平台', 'value': 'Web端、移动端、小程序'},
                {'label': '用户数量', 'value': '500+ 活跃用户'},
                {'label': '数据存储', 'value': 'MySQL 8.0'},
                {'label': '部署环境', 'value': '阿里云服务器'},
                {'label': '维护团队', 'value': 'IT部门'},
                {'label': '联系方式', 'value': 'zhangsan@company.com'}
            ],
            'Review': ['初审', '复审', '签发']
    },
    {
        'id': 2,
        'name': '郭丰、郭光章所属位于江宁区2222',
        'category': '财务管理',
        'status': 'active',
        'statusText': '运行中',
        'priority': 'high',
        'priorityText': '高优先级',
        'colorCode': '#52c41a',
        'author': '李四',
        'createTime': '2024-02-10 11:00:00',
        'updateTime': '2024-03-25 16:30:00',
        'version': 'v1.8.2',
        'usageCount': 890,
        'icon': '/images/icons/finance.png',
        'description': '房地产抵押价值评估',
        'basicInfo': [
            {'label': '是否单一项目', 'value': True, 'type': 'radio'},
            {'label': '是否房地产', 'value': False, 'type': 'radio'},
            {'label': '发起部门', 'value': '江阴事业中心'},
            {'label': '登记时间', 'value': '2025-10-20 15:32'},
            {'label': '项目类型', 'value': '预估'},
            {'label': '报告编号', 'value': '苏同方【2025】(溢)(预)第0305号'},
            {'label': '项目名称', 'value': '徐兰荣朝阳路105-5，105-6号'},
            {'label': '委托方', 'value': '徐兰英'},
            {'label': '委托方联系人', 'value': ''},
            {'label': '委托方联系电话', 'value': ''},
            {'label': '委托方地址', 'value': ''},
            {'label': '业务来源', 'value': '徐兰英'},
            {'label': '业务来源联系人', 'value': ''},
            {'label': '业务来源联系电话', 'value': ''},
            {'label': '实施单位', 'value': ''},
            {'label': '项目负责人', 'value': '徐琳燕'},
            {'label': '归档日期', 'value': ''},
            {'label': '归档人员', 'value': ''},
            {'label': '项目状态', 'value': '待盖章'},
            {'label': '预计收费金额', 'value': ''},
            {'label': '开票总金额', 'value': ''},
            {'label': '到账总金额', 'value': ''},
            {'label': '备注', 'value': ''},
            {'label': '注销日期', 'value': ''},
            {'label': '注销原因', 'value': ''}
        ],
        'details': [
            {'label': '支持平台', 'value': 'Web端、移动端'},
            {'label': '用户数量', 'value': '300+ 活跃用户'},
            {'label': '月处理单据', 'value': '2000+ 张'},
            {'label': '集成系统', 'value': 'ERP、财务系统'},
            {'label': '维护团队', 'value': '财务部 + IT部门'},
            {'label': '联系方式', 'value': 'lisi@company.com'}
        ],
            'Review': ['初审', '复审', '签发']
    },
    {
        'id': 3,
        'name': '项目管理平台',
        'category': '项目管理',
        'status': 'pending',
        'statusText': '待上线',
        'priority': 'medium',
        'priorityText': '中优先级',
        'colorCode': '#722ed1',
        'author': '王五',
        'createTime': '2024-03-01 14:20:00',
        'updateTime': '2024-03-28 10:45:00',
        'version': 'v1.0.0-beta',
        'usageCount': 0,
        'icon': '/images/icons/project.png',
        'description': '估价项目进度跟踪与管理',
            'basicInfo': [
                {'label': '应用类别', 'value': '项目管理'},
                {'label': '创建时间', 'value': '2024-03-01 14:20:00'},
                {'label': '创建者', 'value': '王五'},
                {'label': '版本号', 'value': 'v1.0.0-beta'},
                {'label': '使用次数', 'value': '0'},
                {'label': '最后更新', 'value': '2024-03-28 10:45:00'}
            ],
        'details': [
            {'label': '支持平台', 'value': 'Web端'},
            {'label': '预期用户', 'value': '200+ 项目成员'},
            {'label': '开发进度', 'value': '85% 完成'},
            {'label': '测试状态', 'value': 'UAT测试中'},
            {'label': '上线计划', 'value': '2024年4月15日'},
            {'label': '联系方式', 'value': 'wangwu@company.com'}
        ],
            'Review': ['初审', '复审', '签发']
    },
    {
        'id': 4,
        'name': '客户关系管理',
        'category': '办公工具',
        'status': 'active',
        'statusText': '运行中',
        'priority': 'high',
        'priorityText': '高优先级',
        'colorCode': '#1890ff',
        'author': '赵六',
        'createTime': '2023-12-20 16:45:00',
        'updateTime': '2024-03-22 13:20:00',
        'version': 'v3.2.1',
        'usageCount': 2100,
        'icon': '/images/icons/crm.png',
        'description': '客户关系管理、销售跟进、客户数据分析',
            'basicInfo': [
                {'label': '应用类别', 'value': '办公工具'},
                {'label': '创建时间', 'value': '2023-12-20 16:45:00'},
                {'label': '创建者', 'value': '赵六'},
                {'label': '版本号', 'value': 'v3.2.1'},
                {'label': '使用次数', 'value': '2100'},
                {'label': '最后更新', 'value': '2024-03-22 13:20:00'}
            ],
        'details': [
            {'label': '支持平台', 'value': 'Web端、移动端'},
            {'label': '用户数量', 'value': '150+ 销售人员'},
            {'label': '客户数据', 'value': '10000+ 客户记录'},
            {'label': '集成系统', 'value': '财务系统、邮件系统'},
            {'label': '维护团队', 'value': '销售部 + IT部门'},
            {'label': '联系方式', 'value': 'zhaoliu@company.com'}
        ],
            'Review': ['初审', '复审', '签发']
    },
        {
            'id': 5,
            'name': '即时通讯工具',
            'category': '沟通协作',
            'status': 'active',
            'statusText': '运行中',
            'priority': 'medium',
            'priorityText': '中优先级',
            'colorCode': '#13c2c2',
            'author': '孙七',
            'createTime': '2024-01-08 10:15:00',
            'updateTime': '2024-03-26 15:40:00',
            'version': 'v2.5.0',
            'usageCount': 3200,
            'icon': '/images/icons/chat.png',
            'description': '企业内部即时通讯、消息推送、在线会议',
            'basicInfo': [
                {'label': '应用类别', 'value': '沟通协作'},
                {'label': '创建时间', 'value': '2024-01-08 10:15:00'},
                {'label': '创建者', 'value': '孙七'},
                {'label': '版本号', 'value': 'v2.5.0'},
                {'label': '使用次数', 'value': '3200'},
                {'label': '最后更新', 'value': '2024-03-26 15:40:00'}
            ],
        'details': [
            {'label': '支持平台', 'value': 'Web端、桌面端、移动端'},
            {'label': '用户数量', 'value': '800+ 在线用户'},
            {'label': '消息量', 'value': '日均50000+ 条消息'},
            {'label': '服务器', 'value': '私有化部署'},
            {'label': '维护团队', 'value': 'IT部门'},
            {'label': '联系方式', 'value': 'sunqi@company.com'}
        ],
            'Review': ['初审', '复审', '签发']
    },
        {
            'id': 6,
            'name': '数据分析平台',
            'category': '数据分析',
            'status': 'inactive',
            'statusText': '维护中',
            'priority': 'low',
            'priorityText': '低优先级',
            'colorCode': '#eb2f96',
            'author': '周八',
            'createTime': '2023-11-30 13:25:00',
            'updateTime': '2024-03-15 09:10:00',
            'version': 'v1.3.5',
            'usageCount': 450,
            'icon': '/images/icons/analytics.png',
            'description': '数据可视化、报表生成、数据分析',
            'basicInfo': [
                {'label': '应用类别', 'value': '数据分析'},
                {'label': '创建时间', 'value': '2023-11-30 13:25:00'},
                {'label': '创建者', 'value': '周八'},
                {'label': '版本号', 'value': 'v1.3.5'},
                {'label': '使用次数', 'value': '450'},
                {'label': '最后更新', 'value': '2024-03-15 09:10:00'}
            ],
        'details': [
            {'label': '支持平台', 'value': 'Web端'},
            {'label': '用户数量', 'value': '80+ 分析师'},
            {'label': '数据源', 'value': '15个业务系统'},
            {'label': '维护状态', 'value': '系统升级中'},
            {'label': '预计恢复', 'value': '2024年4月5日'},
            {'label': '联系方式', 'value': 'zhouba@company.com'}
        ],
            'Review': ['初审', '复审', '签发']
    }
]
}

# 保持原有的MOCK_APPS变量以兼容现有代码
MOCK_APPS = MOCK_APPS_BY_ID['default']

# 不同应用ID对应的筛选条件配置
FILTER_CONFIGS = {
    '23': [  # 考勤管理系统相关筛选
        {
            'id': 'category',
            'name': '项目管理',
            'options': [
                {'value': '项目已归档', 'label': '项目已归档'},
                {'value': '项目未归档', 'label': '项目未归档'},
                {'value': '项目已取消', 'label': '项目已取消'},
            ]
        },
        {
            'id': 'status',
            'name': '盖章管理',
            'options': [
                {'value': '已盖章', 'label': '已盖章'},
                {'value': '未盖章', 'label': '未盖章'},
            ]
        },
        {
            'id': 'priority',
            'name': '审核签发',
            'options': [
                {'value': '项目初审', 'label': '项目初审'},
                {'value': '项目复审', 'label': '项目复审'},
                {'value': '项目签发', 'label': '项目签发'},
            ]
        }
    ],
    '2': [  # 郭丰、郭光章所属位于江宁区东山街道府前东路9号江宁万达广场（西区）4幢1116室房地产抵押价值评估相关筛选
        {
            'id': 'category',
            'name': '类别',
            'options': [
                {'value': '财务管理', 'label': '财务管理'},
                {'value': '报销系统', 'label': '报销系统'},
                {'value': '费用管理', 'label': '费用管理'},
            ]
        },
        {
            'id': 'status',
            'name': '状态',
            'options': [
                {'value': 'active', 'label': '运行中'},
                {'value': 'inactive', 'label': '维护中'},
            ]
        },
        {
            'id': 'priority',
            'name': '优先级',
            'options': [
                {'value': 'high', 'label': '高优先级'},
                {'value': 'medium', 'label': '中优先级'},
                {'value': 'low', 'label': '低优先级'},
            ]
        }
    ],
    '3': [  # 项目管理平台相关筛选
        {
            'id': 'category',
            'name': '类别',
            'options': [
                {'value': '项目管理', 'label': '项目管理'},
                {'value': '团队协作', 'label': '团队协作'},
                {'value': '任务管理', 'label': '任务管理'},
            ]
        },
        {
            'id': 'status',
            'name': '状态',
            'options': [
                {'value': 'pending', 'label': '待上线'},
                {'value': 'active', 'label': '运行中'},
            ]
        },
        {
            'id': 'priority',
            'name': '优先级',
            'options': [
                {'value': 'medium', 'label': '中优先级'},
                {'value': 'high', 'label': '高优先级'},
            ]
        }
    ],
    'default': [  # 默认筛选条件
    {
        'id': 'category',
        'name': '项目状态',
        'options': [
            {'value': '待归档', 'label': '待归档'},
            {'value': '项目未归档', 'label': '项目未归档'},
            {'value': '项目已取消', 'label': '项目已取消'},
            {'value': '项目已归档', 'label': '项目已归档'},
            {'value': '待初审', 'label': '待初审'},
            {'value': '待复审', 'label': '待复审'},
        ]
    },
    {
        'id': 'status',
        'name': '项目类型',
        'options': [
            {'value': '预估项目', 'label': '预估项目'},
        ]
    },
    {
        'id': 'priority',
        'name': '估计目的',
        'options': [
            {'value': '出让项目', 'label': '出让项目'},
            {'value': '抵押', 'label': '抵押'},
            {'value': '核定资产', 'label': '核定资产'},
            {'value': '价值咨询', 'label': '价值咨询'},
            {'value': '涉税评估', 'label': '涉税评估'},
        ]
    }
]
}

# 按钮库：所有可用的按钮定义
BUTTON_LIBRARY = {
    'new': {
        'id': 'new',
        'name': '新建',
        'type': 'success',
        'hasChildren': True,
        'children': [
            {'id': 'newly', 'name': '新建', 'type': 'success'},
            {'id': 'modify', 'name': '修改', 'type': 'success'},
            {'id': 'cancel', 'name': '注销', 'type': 'warning'},
            {'id': 'estimate_to_formal', 'name': '预估转正式', 'type': 'primary'}
        ]
    },
    'integrated_payment': {
        'id': 'integrated_payment',
        'name': '款项管理',
        'type': 'primary',
        'hasChildren': True,
        'children': [
            {'id': 'receive_payment', 'name': '收款', 'type': 'success'},
            {'id': 'make_payment', 'name': '付款', 'type': 'primary'},
            {'id': 'refund', 'name': '退款', 'type': 'warning'},
        ]
    },
    'mark_location': {'id': 'mark_location', 'name': '📍标注位置', 'type': 'success'},
    'estimate_result': {'id': 'estimate_result', 'name': '估价结果', 'type': 'success'},
    'submit_audit': {'id': 'submit_audit', 'name': '提交审核', 'type': 'success'},
    'generate_report': {'id': 'generate_report', 'name': '生成报告', 'type': 'default'},
    'cancel_cancel': {'id': 'cancel_cancel', 'name': '取消注销', 'type': 'warning'},
    'launch': {'id': 'launch', 'name': '审核', 'type': 'primary'},
    'archive': {'id': 'archive', 'name': '提交归档', 'type': 'default'},
    'confirm_archive': {'id': 'confirm_archive', 'name': '确认归档', 'type': 'success'},
    'submit_invoice_application': {
        'id': 'submit_invoice_application',
        'name': '提交开票申请',
        'type': 'primary'
    },

    'project_progress': {'id': 'project_progress', 'name': '流程进度', 'type': 'success'},
    'data_statistics': {'id': 'data_statistics', 'name': '数据统计', 'type': 'primary'},
    'seal': {'id': 'seal', 'name': '盖章', 'type': 'primary'},
    'modify_project_permission': {'id': 'modify_project_permission', 'name': '修改项目权限', 'type': 'primary'},
    'major_project_reminder': {'id': 'major_project_reminder', 'name': '重大项目提醒', 'type': 'warning'},
    'modify_status': {
        'id': 'modify_status',
        'name': '修改状态',
        'type': 'primary'
    },
    # 合同管理相关按钮
    'contract_new': {'id': 'contract_new', 'name': '新建', 'type': 'success'},
    'contract_cancel': {'id': 'contract_cancel', 'name': '注销', 'type': 'warning'},
    'seal_30days': {'id': 'seal_30days', 'name': '我方盖章已满30天', 'type': 'primary'},
    'contract_expire': {'id': 'contract_expire', 'name': '合同到期', 'type': 'warning'},
    'send_expire_reminder': {'id': 'send_expire_reminder', 'name': '发送合同到期提醒', 'type': 'primary'},
}

# 类别按钮配置：每个类别（category_subcategory）配置使用的按钮ID列表
CATEGORY_BUTTON_CONFIG = {
    # 预估询价 -> 项目新增
    'preliminary_project_new': ['new', 'mark_location', 'estimate_result', 'submit_audit', 'generate_report'],
    
    # 预估询价 -> 项目注销
    'preliminary_project_cancel': ['cancel_cancel', 'mark_location'],
    
    # 正式估价 -> 项目新增
    'formal_project_new': ['new', 'mark_location', 'estimate_result', 'submit_audit', 'generate_report'],
    
    # 正式估价 -> 项目已归档
    'formal_project_archived': ['mark_location', 'estimate_result', 'generate_report'],
    
    # 正式估价 -> 项目已注销
    'formal_project_cancelled': ['mark_location'],
    
    # 正式估价 -> 数据总览
    'formal_data_overview': ['data_statistics', 'generate_report'],
    
    # 盖章管理 -> 待盖章（总）
    'seal_pending_total': ['seal', 'mark_location'],
    
    # 盖章管理 -> 待盖章（分）
    'seal_pending_part': ['seal', 'mark_location'],
    
    # 盖章管理 -> 已盖章
    'seal_completed': ['mark_location', 'generate_report'],
    
    # 项目预算回款 -> 汇总表
    'budget_summary': ['data_statistics', 'generate_report'],
    
    # 审核签发 -> 项目初审
    'project_preliminary': ['launch', 'mark_location'],
    
    # 审核签发 -> 项目复审
    'project_review': ['launch', 'mark_location'],
    
    # 审核签发 -> 项目签发
    'project_issue': ['launch', 'mark_location', 'generate_report'],
    
    # 财务管理 -> 申请开票
    'invoice_apply': ['submit_audit', 'mark_location'],
    
    # 财务管理 -> 待开发票
    'invoice_pending': ['launch', 'mark_location'],
    
    # 财务管理 -> 待收费用
    'payment_pending': ['launch', 'mark_location'],
    
    # 财务管理 -> 已收费用
    'payment_received': ['data_statistics', 'generate_report'],
    
    # 财务管理 -> 红冲发票
    'invoice_red': ['submit_audit', 'mark_location'],
    
    # 合同管理 -> 进行中的合同
    'contract_management_ongoing_contracts': ['contract_new', 'contract_cancel', 'seal_30days', 'contract_expire', 'send_expire_reminder'],
    
    # 合同管理 -> 已归档的合同
    'contract_management_archived_contracts': ['mark_location'],
    
    # 合同管理 -> 已注销的合同
    'contract_management_cancelled_contracts': ['mark_location'],
    
    # 我的待办 -> 我的待办工作
    'my_tasks_pending_tasks': ['launch', 'mark_location'],
    
    # 我的待办 -> 我的已办工作
    'my_tasks_completed_tasks': ['mark_location'],
}

# 根据类别ID获取按钮配置函数
def get_buttons_by_category(category_id, sub_category_id):
    """
    根据类别ID和子类别ID获取按钮配置
    category_id: 主类别ID (如: preliminary, formal, seal 等)
    sub_category_id: 子类别ID (如: project_new, project_cancel 等)
    
    返回: 按钮配置列表
    """
    # 组合键：category_subcategory
    key = f'{category_id}_{sub_category_id}'
    print('key',key)
    # 获取该类别对应的按钮ID列表，如果没有配置则使用默认配置
    button_ids = CATEGORY_BUTTON_CONFIG.get(key)
    if not button_ids:
        # 如果没有找到配置，使用默认配置
        button_ids = CATEGORY_BUTTON_CONFIG.get('preliminary_project_new', [])
    
    # 根据按钮ID从按钮库中获取按钮配置
    buttons = []
    for btn_id in button_ids:
        if btn_id in BUTTON_LIBRARY:
            # 深拷贝按钮配置
            btn = BUTTON_LIBRARY[btn_id].copy()
            # 如果有子按钮，也要深拷贝
            if 'children' in btn:
                btn['children'] = [child.copy() for child in btn['children']]
            buttons.append(btn)
    
    return buttons


@method_decorator(csrf_exempt, name='dispatch')
class GetAppFilters(APIView):
    """获取应用筛选条件"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            app_id = data.get('app_id')
            
            # 根据应用ID获取对应的筛选条件，如果没有则使用默认配置
            filters = FILTER_CONFIGS.get(str(app_id), FILTER_CONFIGS['default'])
            
            return JsonResponse({
                'status': True,
                'filters': filters,
                'app_id': app_id
            })
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'获取筛选条件失败: {str(e)}'
            })


@method_decorator(csrf_exempt, name='dispatch')
class GetAppCenterList(APIView):
    """获取应用中心列表"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            search_keyword = data.get('search', '').strip().lower()
            filters = data.get('filters', [])
            app_id = data.get('app_id')
            
            # 根据应用ID获取对应的应用列表，如果没有则使用默认列表
            mock_apps = MOCK_APPS_BY_ID.get(str(app_id), MOCK_APPS_BY_ID['default'])
            filtered_apps = mock_apps.copy()
            
            # 搜索筛选
            if search_keyword:
                filtered_apps = [
                    app for app in filtered_apps
                    if (search_keyword in app.get('name', '').lower() or
                        search_keyword in app.get('description', '').lower() or
                        search_keyword in app.get('category', '').lower())
                ]
            
            # 条件筛选
            for filter_item in filters:
                filter_id = filter_item.get('id')
                filter_value = filter_item.get('value')
                
                if filter_id == 'category':
                    filtered_apps = [app for app in filtered_apps if app['category'] == filter_value]
                elif filter_id == 'status':
                    filtered_apps = [app for app in filtered_apps if app['status'] == filter_value]
                elif filter_id == 'priority':
                    filtered_apps = [app for app in filtered_apps if app['priority'] == filter_value]
            
            return JsonResponse({
                'status': True,
                'apps': filtered_apps,
                'total': len(filtered_apps),
                'app_id': app_id
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'获取应用列表失败: {str(e)}'
            })


@method_decorator(csrf_exempt, name='dispatch')
class GetAppCategories(APIView):
    """获取应用分类列表"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            app_id = data.get('app_id')
            
            if not app_id:
                return JsonResponse({'status': False, 'message': '应用ID不能为空'})
            
            # 根据应用ID返回对应的分类数据
            categories = self.get_categories_by_app_id(app_id)
            
            return JsonResponse({
                'status': True,
                'categories': categories,
                'count': len(categories)
            })
            
        except Exception as e:
            return JsonResponse({'status': False, 'message': f'获取分类失败: {str(e)}'})
    
    def get_categories_by_app_id(self, app_id):
        """根据应用ID获取分类数据"""
        # 这里可以根据不同的应用ID返回不同的分类
        # 暂时返回估价项目的分类数据作为示例
        print('获取应用分类列表',app_id)
        if app_id == '1':  # 经纪资管
            return [
                {
                    'id': 'project_management',
                    'name': '项目管理',
                    'count': 5,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'project_active', 'name': '项目进行中'},
                        {'id': 'project_pending_archive', 'name': '项目待归档'},
                        {'id': 'project_archived', 'name': '项目已归档'},
                        {'id': 'project_cancelled', 'name': '项目已注销'},
                        {'id': 'project_all', 'name': '所有项目'}
                    ]
                },
                {
                    'id': 'project_result',
                    'name': '项目成果',
                    'count': 7,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'result_pending_preliminary', 'name': '待初审'},
                        {'id': 'result_pending_review', 'name': '待复审'},
                        {'id': 'result_pending_issue', 'name': '待签发'},
                        {'id': 'result_pending_seal', 'name': '待盖章'},
                        {'id': 'result_pending_archive', 'name': '待归档'},
                        {'id': 'result_completed', 'name': '已完成'},
                        {'id': 'result_all', 'name': '所有成果'}
                    ]
                },
                {
                    'id': 'project_budget_payment',
                    'name': '项目预算回款',
                    'count': 1,
                    'color': '#f093fb',
                    'subCategories': [
                        {'id': 'budget_summary', 'name': '汇总表'}
                    ]
                },
                {
                    'id': 'finance_management',
                    'name': '财务管理',
                    'count': 5,
                    'color': '#4facfe',
                    'subCategories': [
                        {'id': 'invoice_apply', 'name': '开票申请'},
                        {'id': 'invoice_pending', 'name': '待开发票'},
                        {'id': 'payment_pending', 'name': '代收费用'},
                        {'id': 'payment_received', 'name': '已收费用'},
                        {'id': 'invoice_red', 'name': '红冲发票'}
                    ]
                },
                {
                    'id': 'data_statistics',
                    'name': '数据统计',
                    'count': 8,
                    'color': '#fa709a',
                    'subCategories': [
                        {'id': 'project_progress_statistics', 'name': '项目进度统计'},
                        {'id': 'invoice_detail_by_customer', 'name': '项目开票明细（按客户）'},
                        {'id': 'invoice_detail_by_project', 'name': '项目开票明细（按项目）'},
                        {'id': 'payment_detail_by_customer', 'name': '项目回款明细（按客户）'},
                        {'id': 'payment_detail_by_project', 'name': '项目回款明细（按项目）'},
                        {'id': 'project_expenditure', 'name': '项目支出'},
                        {'id': 'project_settlement', 'name': '项目结算'},
                        {'id': 'project_charge_expenditure', 'name': '项目收费支出一览表'}
                    ]
                },
            ]
        if app_id == '2':  # 经纪资管
            return [
                {
                    'id': 'collection_management',
                    'name': '征收管理',
                    'count': 2,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'ongoing_projects', 'name': '进行中的项目'},
                        {'id': 'archived_projects', 'name': '已归档的项目'}
                    ]
                },
                {
                    'id': 'project_result',
                    'name': '项目成果',
                    'count': 6,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'result_pending_preliminary', 'name': '待初审'},
                        {'id': 'result_pending_review', 'name': '待复审'},
                        {'id': 'result_pending_issue', 'name': '待签发'},
                        {'id': 'result_pending_seal', 'name': '待盖章'},
                        {'id': 'result_pending_archive', 'name': '待归档'},
                        {'id': 'result_completed', 'name': '已完成'}
                    ]
                },
                {
                    'id': 'project_budget_payment',
                    'name': '项目预算回款',
                    'count': 1,
                    'color': '#f093fb',
                    'subCategories': [
                        {'id': 'budget_summary', 'name': '汇总表'}
                    ]
                },
                {
                    'id': 'finance_management',
                    'name': '财务管理',
                    'count': 4,
                    'color': '#4facfe',
                    'subCategories': [
                        {'id': 'invoice_apply', 'name': '开票申请'},
                        {'id': 'invoice_pending', 'name': '待开发票'},
                        {'id': 'payment_pending', 'name': '待收费用'},
                        {'id': 'payment_received', 'name': '已收费用'}
                    ]
                },
                {
                    'id': 'data_statistics',
                    'name': '数据统计',
                    'count': 6,
                    'color': '#fa709a',
                    'subCategories': [
                        {'id': 'invoice_detail_by_project', 'name': '项目开票明细(按项目)'},
                        {'id': 'invoice_detail_by_customer', 'name': '项目开票明细(按客户)'},
                        {'id': 'payment_detail_by_project', 'name': '项目回款明细(按项目)'},
                        {'id': 'payment_detail_by_customer', 'name': '项目回款明细(按客户)'},
                        {'id': 'project_expenditure', 'name': '项目支出'},
                        {'id': 'project_settlement', 'name': '项目结算'}
                    ]
                },
            ]
        if app_id == '23':  # 估价项目
            return [
                {
                    'id': 'preliminary',
                    'name': '预估询价',
                    'count': 2,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'project_new', 'name': '项目新增'},
                        {'id': 'project_cancel', 'name': '项目注销'}
                    ]
                },
                {
                    'id': 'formal',
                    'name': '正式估价',
                    'count': 4,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'project_new', 'name': '项目新增'},
                        {'id': 'project_archived', 'name': '项目已归档'},
                        {'id': 'project_cancelled', 'name': '项目已注销'},
                        {'id': 'data_overview', 'name': '数据总览'}
                    ]
                },
                {
                    'id': 'seal',
                    'name': '盖章管理',
                    'count': 3,
                    'color': '#f093fb',
                    'subCategories': [
                        {'id': 'seal_pending_total', 'name': '待盖章（总）'},
                        {'id': 'seal_pending_part', 'name': '待盖章（分）'},
                        {'id': 'seal_completed', 'name': '已盖章'}
                    ]
                },
                {
                    'id': 'budget',
                    'name': '项目预算回款',
                    'count': 1,
                    'color': '#4facfe',
                    'subCategories': [
                        {'id': 'budget_summary', 'name': '汇总表'}
                    ]
                },
                {
                    'id': 'audit',
                    'name': '审核签发',
                    'count': 3,
                    'color': '#43e97b',
                    'subCategories': [
                        {'id': 'project_preliminary', 'name': '项目初审'},
                        {'id': 'project_review', 'name': '项目复审'},
                        {'id': 'project_issue', 'name': '项目签发'}
                    ]
                },
                {
                    'id': 'finance',
                    'name': '财务管理',
                    'count': 4,
                    'color': '#fa709a',
                    'subCategories': [
                        {'id': 'invoice_apply', 'name': '申请开票'},
                        {'id': 'invoice_pending', 'name': '待开发票'},
                        {'id': 'payment_pending', 'name': '待收费用'},
                        {'id': 'payment_received', 'name': '已收费用'},
                        {'id': 'invoice_red', 'name': '红冲发票'}
                    ]
                },
                {
                    'id': 'report',
                    'name': '统计报表',
                    'count': 2,
                    'color': '#ffecd2',
                    'subCategories': [
                        {'id': 'invoice_detail_project', 'name': '项目开票明细（按项目）'},
                        {'id': 'invoice_detail_customer', 'name': '项目开票明细（按客户）'}
                    ]
                },
                {
                    'id': 'case',
                    'name': '案例信息',
                    'count': 1,
                    'color': '#a8edea',
                    'subCategories': [
                        {'id': 'market_info', 'name': '市场信息'}
                    ]
                }
            ]
        if app_id == '24':  # 资产项目
            return [
                {
                    'id': 'project_management',
                    'name': '项目管理',
                    'count': 4,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'project_new', 'name': '项目新增'},
                        {'id': 'project_archived', 'name': '项目已归档'},
                        {'id': 'project_cancelled', 'name': '项目已注销'},
                        {'id': 'data_overview', 'name': '数据总览'}
                    ]
                },
                {
                    'id': 'project_prepayment',
                    'name': '项目预回款',
                    'count': 1,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'prepayment_summary', 'name': '汇总表'},
                    ]
                },
                {
                    'id': 'seal',
                    'name': '盖章管理',
                    'count': 2,
                    'color': '#f093fb',
                    'subCategories': [
                        {'id': 'seal_pending', 'name': '待盖章'},
                        {'id': 'seal_completed', 'name': '已盖章'}
                    ]
                },
                {
                    'id': 'audit',
                    'name': '审核签发',
                    'count': 3,
                    'color': '#4facfe',
                    'subCategories': [
                        {'id': 'budget_summary', 'name': '项目初审'},
                        {'id': 'project_review', 'name': '项目复审'},
                        {'id': 'project_issue', 'name': '项目签发'}
                    ]
                },
                {
                    'id': 'finance',
                    'name': '财务管理',
                    'count': 5,
                    'color': '#fa709a',
                    'subCategories': [
                        {'id': 'invoice_apply', 'name': '申请开票'},
                        {'id': 'invoice_pending', 'name': '待开发票'},
                        {'id': 'payment_pending', 'name': '待收费用'},
                        {'id': 'payment_received', 'name': '已收费用'},
                        {'id': 'invoice_red', 'name': '红冲发票'}
                    ]
                },
                {
                    'id': 'report',
                    'name': '统计报表',
                    'count': 2,
                    'color': '#ffecd2',
                    'subCategories': [
                        {'id': 'invoice_detail_project', 'name': '项目开票明细（按项目）'},
                        {'id': 'invoice_detail_customer', 'name': '项目开票明细（按客户）'}
                    ]
                },
            ]
        if app_id == '25':  # 规划勘测
            return [
                {
                    'id': 'project_management',
                    'name': '项目管理',
                    'count': 5,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'project_active', 'name': '项目进行中'},
                        {'id': 'project_archived', 'name': '项目待归档'},
                        {'id': 'project_cancelled', 'name': '项目已归档'},
                        {'id': 'project_cancelled', 'name': '项目已注销'},
                        {'id': 'project_all', 'name': '所有项目档案'}
                    ]
                },
                {
                    'id': 'project_result',
                    'name': '项目成果',
                    'count': 7,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'result_pending', 'name': '待初审'},
                        {'id': 'result_review', 'name': '待复审'},
                        {'id': 'result_issue', 'name': '待签发'},
                        {'id': 'result_seal', 'name': '待盖章'},
                        {'id': 'result_archive', 'name': '待归档'},
                        {'id': 'result_completed', 'name': '已完成'},
                        {'id': 'result_all', 'name': '所有成果'},
                    ]
                },
                {
                    'id': 'project_payment',
                    'name': '项目预算回款',
                    'count': 1,
                    'color': '#f093fb',
                    'subCategories': [
                        {'id': 'payment_summary', 'name': '汇总表'},
                    ]
                },
                {
                    'id': 'finance',
                    'name': '财务管理',
                    'count': 5,
                    'color': '#4facfe',
                    'subCategories': [
                        {'id': 'invoice_apply', 'name': '申请开票'},
                        {'id': 'project_review', 'name': '待开发票'},
                        {'id': 'project_issue', 'name': '待收费用'},
                        {'id': 'project_issue', 'name': '已收费用'},
                        {'id': 'project_issue', 'name': '红冲发票'}
                    ]
                },
                {
                    'id': 'statistics',
                    'name': '数据统计',
                    'count': 5,
                    'color': '#fa709a',
                    'subCategories': [
                        {'id': 'result_statistics', 'name': '项目成果统计'},
                        {'id': 'work_content_statistics', 'name': '工作内容统计'},
                        {'id': 'project_progress_statistics', 'name': '项目进度统计'},
                        {'id': 'invoice_detail', 'name': '项目开票明细'},
                        {'id': 'payment_received', 'name': '项目回款明细'},
                        {'id': 'project_expenditure', 'name': '项目支出'},
                        {'id': 'project_settlement', 'name': '项目结算'},
                        {'id': 'project_charge_expenditure', 'name': '项目收费支出一览表'}
                    ]
                },
            ]
        if app_id == '26':  # 经纪业务
            return [
                {
                    'id': 'ongoing_business',
                    'name': '进行中业务',
                    'count': 1,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'small_owner_business', 'name': '小业主业务'}
                    ]
                },
                {
                    'id': 'archived_business',
                    'name': '已归档业务',
                    'count': 1,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'small_owner_business_archived', 'name': '小业主业务'}
                    ]
                },
                {
                    'id': 'pending_submit',
                    'name': '待提交审核',
                    'count': 3,
                    'color': '#f093fb',
                    'subCategories': [
                        {'id': 'receive_pending_submit', 'name': '收款待提交'},
                        {'id': 'payment_pending_submit', 'name': '付款待提交'},
                        {'id': 'refund_pending_submit', 'name': '退款待提交'}
                    ]
                },
                {
                    'id': 'payment_audit_flow',
                    'name': '付款审核流程',
                    'count': 4,
                    'color': '#4facfe',
                    'subCategories': [
                        {'id': 'payment_pre_audit', 'name': '预审核'},
                        {'id': 'payment_dept_audit', 'name': '部门审核'},
                        {'id': 'payment_center_vp_audit', 'name': '中心副总审核'},
                        {'id': 'payment_center_director_audit', 'name': '中心总审核'}
                    ]
                },
                {
                    'id': 'refund_audit_flow',
                    'name': '退款审核流程',
                    'count': 4,
                    'color': '#43e97b',
                    'subCategories': [
                        {'id': 'refund_pre_audit', 'name': '预审核'},
                        {'id': 'refund_dept_audit', 'name': '部门审核'},
                        {'id': 'refund_center_vp_audit', 'name': '中心副总审核'},
                        {'id': 'refund_center_director_audit', 'name': '中心总审核'}
                    ]
                },
                {
                    'id': 'summary_table',
                    'name': '汇总表一览表',
                    'count': 3,
                    'color': '#fa709a',
                    'subCategories': [
                        {'id': 'receive_summary_table', 'name': '收款表汇总表一览表'},
                        {'id': 'payment_summary_table', 'name': '付款表总表一览表'},
                        {'id': 'refund_summary_table', 'name': '退款表汇总表一览表'}
                    ]
                },
                {
                    'id': 'finance_pending_audit',
                    'name': '财务待审核',
                    'count': 3,
                    'color': '#ffecd2',
                    'subCategories': [
                        {'id': 'receive_pending_audit', 'name': '收款待审核'},
                        {'id': 'payment_pending_audit', 'name': '付款待审核'},
                        {'id': 'refund_pending_audit', 'name': '退款待审核'}
                    ]
                },
                {
                    'id': 'finance_audited',
                    'name': '财务已审核',
                    'count': 3,
                    'color': '#a8edea',
                    'subCategories': [
                        {'id': 'receive_audited', 'name': '收款已审核'},
                        {'id': 'payment_audited', 'name': '付款已审核'},
                        {'id': 'refund_audited', 'name': '退款已审核'}
                    ]
                },
                {
                    'id': 'data_statistics',
                    'name': '数据统计',
                    'count': 4,
                    'color': '#ff9a9e',
                    'subCategories': [
                        {'id': 'small_owner_business_statistics', 'name': '小业主业务统计'},
                        {'id': 'small_owner_receive_detail', 'name': '小业主收款明细'},
                        {'id': 'small_owner_payment_detail', 'name': '小业主付款明细'},
                        {'id': 'small_owner_refund_detail', 'name': '小业主退款明细'}
                    ]
                },
            ]
        if app_id == '4':  # 财务管理
            return [
                {
                    'id': 'project_audit',
                    'name': '财务管理',
                    'count': 6,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'invoice_application', 'name': '待开发票'},
                        {'id': 'payment_application', 'name': '待收费用'},
                        {'id': 'payment_received', 'name': '已收费用'},
                        {'id': 'invoice_refund', 'name': '红冲发票'},
                        {'id': 'project_cancelled', 'name': '已注销'},
                        {'id': 'prepayment', 'name': '预回款'}
                    ]
                },
            ]
        if app_id == '65':  # 合同管理
            return [
                {
                    'id': 'contract_management',
                    'name': '合同管理',
                    'count': 3,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'ongoing_contracts', 'name': '进行中的合同'},
                        {'id': 'archived_contracts', 'name': '已归档的合同'},
                        {'id': 'cancelled_contracts', 'name': '已注销的合同'}
                    ]
                },
                {
                    'id': 'my_tasks',
                    'name': '我的待办',
                    'count': 2,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'pending_tasks', 'name': '我的待办工作'},
                        {'id': 'completed_tasks', 'name': '我的已办工作'}
                    ]
                },
            ]
        if app_id == '66':  # 工单管理
            return [
                {
                    'id': 'apply',
                    'name': '申请',
                    'count': 2,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'apply_workorder', 'name': '申请工单'},
                        {'id': 'apply_record', 'name': '申请记录'}
                    ]
                },
                {
                    'id': 'process',
                    'name': '处理',
                    'count': 2,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'process_workorder', 'name': '处理工单'},
                        {'id': 'process_record', 'name': '处理记录'}
                    ]
                },
            ]
        if app_id == '31':  # 员工假期
            return [
                {
                    'id': 'apply',
                    'name': '申请',
                    'count': 2,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'apply_workorder', 'name': '假期申请'},
                        {'id': 'apply_record', 'name': '申请记录'}
                    ]
                },
                {
                    'id': 'process',
                    'name': '处理',
                    'count': 2,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'process_workorder', 'name': '处理工单'},
                        {'id': 'process_record', 'name': '处理记录'}
                    ]
                },
            ]

        # 行政应用通用分类
        try:
            administrative_ids = {str(i) for i in models.Application.objects.filter(app_type='administrative', is_active=True).values_list('id', flat=True)}
        except Exception:
            administrative_ids = set()

        if str(app_id) in administrative_ids:
            return [
                {
                    'id': 'apply',
                    'name': '申请',
                    'count': 2,
                    'color': '#667eea',
                    'subCategories': [
                        {'id': 'apply_new', 'name': '发起申请'},
                        {'id': 'apply_record', 'name': '申请记录'}
                    ]
                },
                {
                    'id': 'process',
                    'name': '处理',
                    'count': 2,
                    'color': '#764ba2',
                    'subCategories': [
                        {'id': 'process_pending', 'name': '待处理'},
                        {'id': 'process_record', 'name': '处理记录'}
                    ]
                },
                {
                    'id': 'report',
                    'name': '统计报表',
                    'count': 2,
                    'color': '#fa709a',
                    'subCategories': [
                        {'id': 'report_monthly', 'name': '月度报表'},
                        {'id': 'report_overview', 'name': '数据总览'}
                    ]
                }
            ]

        return []

class GetAppDetail(APIView):
    """获取应用详情"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            app_id = data.get('app_id')
            context_app_id = data.get('context_app_id')  # 上下文应用ID
            category_id = data.get('category_id')  # 类别ID (如: preliminary, formal, seal 等)
            print('类别IDcategory_id',category_id)
            sub_category_id = data.get('sub_category_id')  # 子类别ID (如: project_new, project_cancel 等)
            
            if not app_id:
                return JsonResponse({
                    'status': False,
                    'message': '应用ID不能为空'
                })
            
            # 在所有应用列表中查找应用详情
            app_detail = None
            for app_list in MOCK_APPS_BY_ID.values():
                for app in app_list:
                    if str(app['id']) == str(app_id):
                        app_detail = app.copy()
                        break
                    if app_detail:
                        break
            
            if not app_detail:
                return JsonResponse({
                    'status': False,
                    'message': '应用不存在'
                })
            
            # 根据类别ID和子类别ID获取按钮配置（优先使用）
            if category_id and sub_category_id:
                actions = get_buttons_by_category(category_id, sub_category_id)
            else:
                # 如果没有类别信息，使用默认配置（预估询价->项目新增）
                actions = get_buttons_by_category('preliminary', 'project_new')
            
            return JsonResponse({
                'status': True,
                'app': app_detail,
                'actions': actions,
                'context_app_id': context_app_id,
                'category_id': category_id,
                'sub_category_id': sub_category_id
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'获取应用详情失败: {str(e)}'
            })


# 待提交审核模拟数据
PENDING_SUBMIT_MOCK_DATA = {
    'receive': [  # 收款待提交
        {
            'orderNumber': 'SK20190718142221582',
            'recorder': '高秋华',
            'amount': '160.00',
            'community': '明湖苑',
            'roomNumber': '12-602',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'SK20190718141802120',
            'recorder': '高秋华',
            'amount': '80.00',
            'community': '惠港玉兰苑一区',
            'roomNumber': '17-1601',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'SK20190718141545678',
            'recorder': '高秋华',
            'amount': '120.00',
            'community': '明湖苑',
            'roomNumber': '5-11-1601',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'SK20190718141234123',
            'recorder': '高秋华',
            'amount': '200.00',
            'community': '惠港玉兰苑一区',
            'roomNumber': '8-902',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'SK20190718140956789',
            'recorder': '高秋华',
            'amount': '150.00',
            'community': '明湖苑',
            'roomNumber': '3-502',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        }
    ],
    'payment': [  # 付款待提交
        {
            'orderNumber': 'FK20190718142221582',
            'recorder': '高秋华',
            'amount': '160.00',
            'community': '明湖苑',
            'roomNumber': '12-602',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'FK20190718141802120',
            'recorder': '高秋华',
            'amount': '80.00',
            'community': '惠港玉兰苑一区',
            'roomNumber': '17-1601',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'FK20190718141545678',
            'recorder': '高秋华',
            'amount': '120.00',
            'community': '明湖苑',
            'roomNumber': '5-11-1601',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'FK20190718141234123',
            'recorder': '高秋华',
            'amount': '200.00',
            'community': '惠港玉兰苑一区',
            'roomNumber': '8-902',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'FK20190718140956789',
            'recorder': '高秋华',
            'amount': '150.00',
            'community': '明湖苑',
            'roomNumber': '3-502',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        }
    ],
    'refund': [  # 退款待提交
        {
            'orderNumber': 'TK20190718142221582',
            'recorder': '高秋华',
            'amount': '160.00',
            'community': '明湖苑',
            'roomNumber': '12-602',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'TK20190718141802120',
            'recorder': '高秋华',
            'amount': '80.00',
            'community': '惠港玉兰苑一区',
            'roomNumber': '17-1601',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'TK20190718141545678',
            'recorder': '高秋华',
            'amount': '120.00',
            'community': '明湖苑',
            'roomNumber': '5-11-1601',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'TK20190718141234123',
            'recorder': '高秋华',
            'amount': '200.00',
            'community': '惠港玉兰苑一区',
            'roomNumber': '8-902',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        },
        {
            'orderNumber': 'TK20190718140956789',
            'recorder': '高秋华',
            'amount': '150.00',
            'community': '明湖苑',
            'roomNumber': '3-502',
            'maintenanceFund': '',
            'deedTax': '',
            'stampDuty': ''
        }
    ]
}


def generate_mock_pending_submit_data(type, count=48):
    """生成更多模拟数据"""
    base_data = PENDING_SUBMIT_MOCK_DATA.get(type, [])
    communities = ['明湖苑', '惠港玉兰苑一区', '阳光花园', '碧水湾', '金桂园', '幸福里', '天蓝湾', '绿城雅居']
    recorders = ['高秋华', '张三', '李四', '王五', '赵六']
    
    result = []
    prefix_map = {
        'receive': 'SK',
        'payment': 'FK',
        'refund': 'TK'
    }
    prefix = prefix_map.get(type, 'SK')
    
    for i in range(count):
        community = random.choice(communities)
        recorder = random.choice(recorders)
        amount = round(random.uniform(50, 500), 2)
        building = random.randint(1, 20)
        floor = random.randint(1, 20)
        room = random.randint(1, 20)
        
        result.append({
            'orderNumber': f'{prefix}20190718{random.randint(10000000, 99999999)}',
            'recorder': recorder,
            'amount': f'{amount:.2f}',
            'community': community,
            'roomNumber': f'{building}-{floor}-{room}01',
            'maintenanceFund': '' if random.random() > 0.3 else f'{round(random.uniform(100, 1000), 2):.2f}',
            'deedTax': '' if random.random() > 0.3 else f'{round(random.uniform(50, 500), 2):.2f}',
            'stampDuty': '' if random.random() > 0.3 else f'{round(random.uniform(10, 100), 2):.2f}'
        })
    
    return result


@method_decorator(csrf_exempt, name='dispatch')
class GetPendingSubmitList(APIView):
    """获取待提交审核列表"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            submit_type = data.get('type', 'receive')  # receive, payment, refund
            app_id = data.get('app_id')
            search = data.get('search', '').strip()
            page = int(data.get('page', 1))
            page_size = int(data.get('page_size', 20))
            
            # 生成模拟数据
            all_data = generate_mock_pending_submit_data(submit_type, 48)
            
            # 搜索筛选
            if search:
                all_data = [
                    item for item in all_data
                    if (search in item.get('orderNumber', '') or
                        search in item.get('recorder', '') or
                        search in item.get('community', '') or
                        search in item.get('roomNumber', ''))
                ]
            
            # 分页
            total = len(all_data)
            start = (page - 1) * page_size
            end = start + page_size
            paginated_data = all_data[start:end]
            
            # 计算总金额
            total_amount = sum(float(item.get('amount', 0)) for item in all_data)
            
            return JsonResponse({
                'status': True,
                'data': paginated_data,
                'total': total,
                'total_amount': f'{total_amount:,.2f}',
                'page': page,
                'page_size': page_size
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'获取待提交列表失败: {str(e)}'
            })


@method_decorator(csrf_exempt, name='dispatch')
class BatchSubmitPending(APIView):
    """批量提交待审核数据"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            submit_type = data.get('type', 'receive')
            app_id = data.get('app_id')
            order_numbers = data.get('order_numbers', [])
            
            if not order_numbers:
                return JsonResponse({
                    'status': False,
                    'message': '请至少选择一项进行提交'
                })
            
            # 模拟提交成功
            # 在实际应用中，这里应该更新数据库状态
            
            return JsonResponse({
                'status': True,
                'message': f'成功提交 {len(order_numbers)} 项数据',
                'submitted_count': len(order_numbers),
                'order_numbers': order_numbers
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'批量提交失败: {str(e)}'
            })


# 汇总表一览表模拟数据
SUMMARY_TABLE_MOCK_DATA = {
    'receive': [  # 收款汇总表
        {
            'summaryNumber': 'SKHZ20250930111039295',
            'recorder': '周丽',
            'summaryTime': '2025/9/30',
            'totalAmount': '111,016.07'
        },
        {
            'summaryNumber': 'SKHZ20250930111039296',
            'recorder': '周丽',
            'summaryTime': '2025/9/30',
            'totalAmount': '95,234.50'
        },
        {
            'summaryNumber': 'SKHZ20250930111039297',
            'recorder': '高秋华',
            'summaryTime': '2025/9/29',
            'totalAmount': '128,567.30'
        },
        {
            'summaryNumber': 'SKHZ20250930111039298',
            'recorder': '周丽',
            'summaryTime': '2025/9/28',
            'totalAmount': '87,432.80'
        },
        {
            'summaryNumber': 'SKHZ20250930111039299',
            'recorder': '高秋华',
            'summaryTime': '2025/9/27',
            'totalAmount': '102,345.60'
        }
    ],
    'payment': [  # 付款汇总表
        {
            'summaryNumber': 'FKHZ20250930111039295',
            'recorder': '周丽',
            'summaryTime': '2025/9/30',
            'totalAmount': '111,016.07'
        },
        {
            'summaryNumber': 'FKHZ20250930111039296',
            'recorder': '周丽',
            'summaryTime': '2025/9/30',
            'totalAmount': '95,234.50'
        },
        {
            'summaryNumber': 'FKHZ20250930111039297',
            'recorder': '高秋华',
            'summaryTime': '2025/9/29',
            'totalAmount': '128,567.30'
        }
    ],
    'refund': [  # 退款汇总表
        {
            'summaryNumber': 'TKHZ20250930111039295',
            'recorder': '周丽',
            'summaryTime': '2025/9/30',
            'totalAmount': '111,016.07'
        },
        {
            'summaryNumber': 'TKHZ20250930111039296',
            'recorder': '周丽',
            'summaryTime': '2025/9/30',
            'totalAmount': '95,234.50'
        },
        {
            'summaryNumber': 'TKHZ20250930111039297',
            'recorder': '高秋华',
            'summaryTime': '2025/9/29',
            'totalAmount': '128,567.30'
        }
    ]
}


def generate_summary_table_detail(summary_number, type):
    """生成汇总表明细数据"""
    communities = ['乐道小区', '明湖苑', '惠港玉兰苑一区', '阳光花园', '碧水湾', '金桂园']
    
    # 根据汇总表编号生成不同的明细数量
    detail_count = random.randint(5, 15)
    details = []
    
    for i in range(detail_count):
        community = random.choice(communities)
        building = random.randint(1, 30)
        floor = random.randint(1, 20)
        room = random.randint(1, 20)
        
        # 生成各种费用数据
        deed_tax = round(random.uniform(5000, 12000), 2) if random.random() > 0.1 else None
        stamp_duty = round(deed_tax * 0.0167, 2) if deed_tax else None
        registration_fee = 550.00 if random.random() > 0.2 else None
        agency_fee = 300.00 if random.random() > 0.2 else None
        maintenance_fund = round(random.uniform(1000, 5000), 2) if random.random() > 0.5 else None
        other_items = round(random.uniform(100, 500), 2) if random.random() > 0.7 else None
        land = round(random.uniform(500, 2000), 2) if random.random() > 0.7 else None
        
        details.append({
            'community': community,
            'roomNumber': f'T{building}-{floor}{room}',
            'maintenanceFund': f'{maintenance_fund:.2f}' if maintenance_fund else '',
            'deedTax': f'{deed_tax:.2f}' if deed_tax else '',
            'stampDuty': f'{stamp_duty:.2f}' if stamp_duty else '',
            'registrationFee': f'{registration_fee:.2f}' if registration_fee else '',
            'otherItems': f'{other_items:.2f}' if other_items else '',
            'land': f'{land:.2f}' if land else '',
            'agencyFee': f'{agency_fee:.2f}' if agency_fee else ''
        })
    
    return details


@method_decorator(csrf_exempt, name='dispatch')
class GetSummaryTableList(APIView):
    """获取汇总表列表"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            summary_type = data.get('type', 'receive')  # receive, payment, refund
            app_id = data.get('app_id')
            search = data.get('search', '').strip()
            
            # 获取基础数据
            base_data = SUMMARY_TABLE_MOCK_DATA.get(summary_type, [])
            
            # 生成更多模拟数据
            all_data = []
            for i in range(10):
                if i < len(base_data):
                    all_data.append(base_data[i].copy())
                else:
                    prefix_map = {
                        'receive': 'SKHZ',
                        'payment': 'FKHZ',
                        'refund': 'TKHZ'
                    }
                    prefix = prefix_map.get(summary_type, 'SKHZ')
                    recorders = ['周丽', '高秋华', '张三', '李四']
                    
                    all_data.append({
                        'summaryNumber': f'{prefix}20250930{random.randint(100000, 999999)}',
                        'recorder': random.choice(recorders),
                        'summaryTime': f'2025/9/{random.randint(25, 30)}',
                        'totalAmount': f'{random.uniform(50000, 150000):,.2f}'
                    })
            
            # 搜索筛选
            if search:
                all_data = [
                    item for item in all_data
                    if (search in item.get('summaryNumber', '') or
                        search in item.get('recorder', '') or
                        search in item.get('summaryTime', ''))
                ]
            
            return JsonResponse({
                'status': True,
                'data': all_data
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'获取汇总表列表失败: {str(e)}'
            })


@method_decorator(csrf_exempt, name='dispatch')
class GetSummaryTableDetail(APIView):
    """获取汇总表明细"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            summary_type = data.get('type', 'receive')
            summary_number = data.get('summary_number')
            
            if not summary_number:
                return JsonResponse({
                    'status': False,
                    'message': '汇总表编号不能为空'
                })
            
            # 生成明细数据
            details = generate_summary_table_detail(summary_number, summary_type)
            
            return JsonResponse({
                'status': True,
                'data': details
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'获取汇总表明细失败: {str(e)}'
            })


@method_decorator(csrf_exempt, name='dispatch')
class GlobalSearch(APIView):
    """全局搜索项目信息"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            search_keyword = data.get('keyword', '').strip().lower()
            category = data.get('category', 'all')  # all, business, administrative, operations, configuration, visualization
            username = data.get('username')
            
            if not username:
                return JsonResponse({
                    'status': False,
                    'message': '用户名不能为空'
                })
            
            # 获取所有应用下的项目列表
            all_projects = []
            
            # 从数据库获取应用ID到app_type的映射
            app_type_map = {}
            try:
                applications = models.Application.objects.all()
                for app in applications:
                    app_type_map[str(app.id)] = app.app_type
            except Exception as e:
                print(f'获取应用类型映射失败: {str(e)}')
            
            # 遍历所有应用ID，收集项目数据
            for app_id, app_list in MOCK_APPS_BY_ID.items():
                # 获取该应用的类型
                app_type = app_type_map.get(app_id, 'business')  # 默认为business
                
                for project in app_list:
                    # 添加应用ID和应用类型信息，用于后续跳转和分类
                    project_with_app = project.copy()
                    project_with_app['app_id'] = app_id
                    project_with_app['app_type'] = app_type  # 添加应用类型
                    all_projects.append(project_with_app)
            
            # 搜索筛选
            if search_keyword:
                filtered_projects = []
                for project in all_projects:
                    # 搜索项目名称、描述、类别、ID
                    if (search_keyword in project.get('name', '').lower() or
                        search_keyword in project.get('description', '').lower() or
                        search_keyword in project.get('category', '').lower() or
                        search_keyword in str(project.get('id', '')).lower()):
                        filtered_projects.append(project)
                        continue
                    
                    # 搜索合同编号、项目编号等信息
                    tabs_data = project.get('tabsData', [])
                    for tab in tabs_data:
                        # 搜索合同信息
                        if tab.get('key') == 'contract' or tab.get('tab') == '合同':
                            fields = tab.get('fields', [])
                            for field in fields:
                                field_value = str(field.get('value', '') or field.get('label', '')).lower()
                                if search_keyword in field_value:
                                    filtered_projects.append(project)
                                    break
                            if project in filtered_projects:
                                break
                        
                        # 搜索关联项目中的项目编号
                        if tab.get('key') == 'related_projects' or tab.get('tab') == '关联项目':
                            table_data = tab.get('tableData', [])
                            for row in table_data:
                                project_number = str(row.get('projectNumber', '')).lower()
                                project_name = str(row.get('projectName', '')).lower()
                                if search_keyword in project_number or search_keyword in project_name:
                                    filtered_projects.append(project)
                                    break
                            if project in filtered_projects:
                                break
            else:
                filtered_projects = all_projects
            
            # 按分类筛选（根据应用的app_type，而不是项目的category）
            if category != 'all':
                filtered_projects = [
                    project for project in filtered_projects
                    if project.get('app_type', 'business') == category
                ]
            
            # 按分类分组（根据应用的app_type）
            business_projects = []
            administrative_projects = []
            operations_projects = []
            configuration_projects = []
            visualization_projects = []
            
            for project in filtered_projects:
                app_type = project.get('app_type', 'business')  # 默认为business
                if app_type == 'business':
                    business_projects.append(project)
                elif app_type == 'administrative':
                    administrative_projects.append(project)
                elif app_type == 'operations':
                    operations_projects.append(project)
                elif app_type == 'configuration':
                    configuration_projects.append(project)
                elif app_type == 'visualization':
                    visualization_projects.append(project)
            
            return JsonResponse({
                'status': True,
                'business': business_projects,
                'administrative': administrative_projects,
                'operations': operations_projects,
                'configuration': configuration_projects,
                'visualization': visualization_projects,
                'total': len(filtered_projects)
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'全局搜索失败: {str(e)}'
            })


@method_decorator(csrf_exempt, name='dispatch')
class SubmitWorkorder(APIView):
    """提交申请工单"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            
            # 获取工单数据
            workorder_type = data.get('workorder_type', '')
            other_type = data.get('other_type', '')
            content = data.get('content', '')
            images = data.get('images', [])
            location = data.get('location', '')
            appointment_date = data.get('appointment_date', '')
            appointment_time = data.get('appointment_time', '')
            username = data.get('username', '')
            
            # 验证必填字段
            if not workorder_type:
                return JsonResponse({
                    'status': False,
                    'message': '工单类型不能为空'
                })
            
            if workorder_type == 'other' and not other_type:
                return JsonResponse({
                    'status': False,
                    'message': '请输入其他类型'
                })
            
            if not content:
                return JsonResponse({
                    'status': False,
                    'message': '处理内容不能为空'
                })
            
            if not location:
                return JsonResponse({
                    'status': False,
                    'message': '当前位置不能为空'
                })
            
            if not appointment_date or not appointment_time:
                return JsonResponse({
                    'status': False,
                    'message': '预约处理时间不能为空'
                })
            
            # 生成工单编号
            now = datetime.now()
            workorder_number = f'GD{now.strftime("%Y%m%d%H%M%S")}{random.randint(1000, 9999)}'
            
            # 模拟保存数据（实际应该保存到数据库）
            workorder_data = {
                'id': random.randint(10000, 99999),
                'workorder_number': workorder_number,
                'workorder_type': workorder_type,
                'other_type': other_type if workorder_type == 'other' else '',
                'type_name': self._get_type_name(workorder_type, other_type),
                'content': content,
                'images': images,
                'location': location,
                'appointment_date': appointment_date,
                'appointment_time': appointment_time,
                'appointment_datetime': f'{appointment_date} {appointment_time}',
                'username': username,
                'status': 'pending',
                'status_text': '待处理',
                'create_time': now.strftime('%Y-%m-%d %H:%M:%S'),
                'update_time': now.strftime('%Y-%m-%d %H:%M:%S')
            }
            
            return JsonResponse({
                'status': True,
                'message': '工单提交成功',
                'data': workorder_data
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'提交工单失败: {str(e)}'
            })
    
    def _get_type_name(self, workorder_type, other_type):
        """获取工单类型名称"""
        type_map = {
            'hardware': '硬件',
            'software': '软件',
            'consultation': '信息咨询',
            'other': other_type if other_type else '其他'
        }
        return type_map.get(workorder_type, '其他')


@method_decorator(csrf_exempt, name='dispatch')
class GetWorkorderList(APIView):
    """获取工单列表（申请记录或处理记录）"""
    
    def post(self, request):
        try:
            data = json.loads(request.body) if request.body else request.POST
            
            list_type = data.get('list_type', 'apply')  # apply: 申请记录, process: 处理记录
            username = data.get('username', '')
            status = data.get('status', '')  # 筛选状态
            page = int(data.get('page', 1))
            page_size = int(data.get('page_size', 20))
            
            # 生成模拟数据
            mock_workorders = self._generate_mock_workorders(list_type, username)
            
            # 按状态筛选
            if status:
                mock_workorders = [
                    w for w in mock_workorders
                    if w.get('status') == status
                ]
            
            # 分页
            total = len(mock_workorders)
            start = (page - 1) * page_size
            end = start + page_size
            paginated_data = mock_workorders[start:end]
            
            return JsonResponse({
                'status': True,
                'data': paginated_data,
                'total': total,
                'page': page,
                'page_size': page_size
            })
            
        except Exception as e:
            return JsonResponse({
                'status': False,
                'message': f'获取工单列表失败: {str(e)}'
            })
    
    def _generate_mock_workorders(self, list_type, username):
        """生成模拟工单数据"""
        workorders = []
        now = datetime.now()
        
        type_options = ['hardware', 'software', 'consultation', 'other']
        type_names = ['硬件', '软件', '信息咨询', '其他']
        status_options = ['pending', 'processing', 'completed', 'cancelled']
        status_texts = ['待处理', '处理中', '已完成', '已取消']
        
        # 生成20条模拟数据
        for i in range(20):
            workorder_type = random.choice(type_options)
            type_name = type_names[type_options.index(workorder_type)]
            status = random.choice(status_options)
            status_text = status_texts[status_options.index(status)]
            
            # 随机日期（过去30天内）
            days_ago = random.randint(0, 30)
            create_time = now - timedelta(days=days_ago)
            
            # 生成工单编号
            workorder_number = f'GD{create_time.strftime("%Y%m%d%H%M%S")}{random.randint(1000, 9999)}'
            
            workorder = {
                'id': 10000 + i,
                'workorder_number': workorder_number,
                'workorder_type': workorder_type,
                'type_name': type_name,
                'content': f'问题描述内容{i+1}：需要处理相关问题，详细描述问题情况...',
                'location': f'位置信息{i+1}',
                'appointment_date': (create_time + timedelta(days=random.randint(0, 7))).strftime('%Y-%m-%d'),
                'appointment_time': f'{random.randint(8, 18):02d}:{random.choice([0, 30]):02d}',
                'username': username or f'用户{random.randint(1, 10)}',
                'handler': f'处理人{random.randint(1, 5)}' if status in ['processing', 'completed'] else '',
                'status': status,
                'status_text': status_text,
                'create_time': create_time.strftime('%Y-%m-%d %H:%M:%S'),
                'update_time': (create_time + timedelta(hours=random.randint(1, 24))).strftime('%Y-%m-%d %H:%M:%S'),
                'images': [] if random.random() > 0.5 else [f'/images/workorder/{i+1}.jpg']
            }
            
            workorders.append(workorder)
        
        # 按创建时间倒序排列
        workorders.sort(key=lambda x: x['create_time'], reverse=True)
        
        return workorders
